2
我可以决定编译器可以生成哪些类型的模板类?类模板:限制模板参数
说我希望下一个类只能够容纳实数(float,double)而不是整数类型。
//can I force T to be only real number types?
template<typename T>
class RealNumber
{
public:
T num;
RealNumber() : num() {}
void add(T x) { num += x; }
T get() const { return num; }
};
所以这应该产生一个编译错误:
RealNumber<int> myrealnumber;
SFINAE与is_integral。 – 2015-03-02 17:02:44
@LuchianGrigore:SFINAE是用于控制重载分辨率的函数模板。这需要'static_assert'和'is_floating_point'。 – 2015-03-02 17:03:55