c – 限制访问功能
发布时间:2020-12-16 10:40:46 所属栏目:百科 来源:网络整理
导读:参见英文答案 std::enable_if to conditionally compile a member function????????????????????????????????????6个 我有一个带有函数的泛型类,我想在编译时将其限制为浮点类型的实例.如下例所示: template typename Tclass ClassName{ // instance variab
参见英文答案 >
std::enable_if to conditionally compile a member function????????????????????????????????????6个
我有一个带有函数的泛型类,我想在编译时将其限制为浮点类型的实例.如下例所示: 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和std :: enable_if的组合来仅启用浮点类型的函数:
#include <type_traits> template <typename T> class ClassName { // instance variables,etc.. public: template<typename T2 = T,typename = typename std::enable_if< std::is_floating_point<T2>::value >::type> void some_method() { // do stuff,but only for floating point types } }; int main() { ClassName<double> d; // OK d.some_method(); // OK ClassName<int> i; // OK i.some_method(); // ERROR } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |