的想法是,我有做一些事情算法對輸入的功能,也許是這樣的:如何使is_arithmetic <myClass> ::值爲真?
#include <type_traits>
#include <vector>
using namespace std;
template<typename T>
double mean(const vector<T>& vec)
{
static_assert(is_arithmetic<T>::value, "Arithmetic not possible on this type");
//compute mean (average)
}//mean
這個偉大的工程,並計算爲我把所有的數字類型的意思,但讓。且說我創建一個新類:
class foo
{
// class that has arithmetic operations created
};// foo
而在這個類的定義,我定義所需的運營商,+和/,所以他們預計投入工作。現在我想用我的新類的平均函數,但顯然不會因爲static_assert而編譯。那麼如何告訴編譯器我的新類應該滿足is_arithmetic<foo>::value
?
這將是偉大的,如果當我創建類我可以給它一個類型,滿足is_arithmetic,但這似乎可能會導致type_traits問題莫名其妙?
或者我需要創建一個新的測試,檢查,看看
is_arithmetic<T>::value || type(T,foo)
或類似的東西?
我寧願只需要適應我的類,而不是函數,如果可能的話,但我很好奇的解決方案。
您需要編寫自己的特質。 – 2014-10-17 22:13:59
@ T.C。好吧,我也這麼想。這是否很簡單,像'is_like_number'一樣創建一個新的'struct',並通過模板規範爲'foo'聲明它爲真? 沒關係,你在下面回答。謝謝 – user2386276 2014-10-17 22:21:04