我有一个泛型类,带有一个函数,我只想在编译时限制为浮点类型的实例。如下例所示:访问函数的限制
template <typename T>
class ClassName
{
// instance variables, etc..
void some_method()
{
// do stuff, but only for floating point types
}
}
如何使编译器拒绝some_method用于非浮点类型的ClassName?
我一直在寻找SFINAE,但我根本无法得到它的工作,所以经过几个小时的失败,我要求你的帮助。
谢谢:)
你试过了什么?你可以用['std :: is_floating_point'](http://en.cppreference.com/w/cpp/types/is_floating_point)和['std :: enable_if'](http:// en。 cppreference.com/w/cpp/types/enable_if)。 – juanchopanza
目前我正在包装功能在另一个功能,如下所示: 'void some_other_method(){some_method(std :: is_floating_point()); }' 'void some_method(){}' 这有效,但我想要一个解决方案,我不必包装功能。 –
Jesper
@juanchopanza尽管你使'some_method'成为模板,你可以使你的例子工作。我正在寻找一个解释此处危险机制的先前答案。 –