【发布时间】:2015-03-02 17:01:33
【问题描述】:
我可以决定编译器可以生成哪些类型的模板类吗?
假设我希望下一个类只能保存实数(浮点数、双精度数)而不是整数类型。
//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 with is_integral.
-
@LuchianGrigore:SFINAE 用于函数模板,用于控制重载解析。这需要
static_assert和is_floating_point。