如何自定义模板以不包含某些类型

JN_

遵循Template class type-specific functions,如何自定义我的模板代码以不为某些类型编译?如果问题不清楚,请查看此示例。

///** template class ***/
template<typename T>
class testClass{
testClass();
T parameter;
}
template<typename T>
void testClass<T>::print(){cout<<parameter.value<<endl;}

上面的类应该适用于以下类型:

 //** types file **/
    class paramtype1{
    int value;
    }
    class paramtype2{
    int value;
    }
    class paramtype3{
    }

如您所见,paramtype3没有value,所以我收到一个编译错误,说value未定义。我知道如果我想为某种类型专门化一个模板类函数,我需要做:

template<>
void testClass<paramtype1>::print(){cout<<parameter.value<<endl;}

但是,有没有什么办法可以反过来,只排除某些类型?

最大66

如果你想启用/禁用完整的类/结构,你可以使用 SFINAE 和部分专业化。

下面是一个 C++17 的例子

template <typename T, typename = void>
struct testClass;

template <typename T>
struct testClass<T, std::void_t<decltype(T::value)>>
 {
   testClass()
    { };

   T parameter;

   void print()
    { std::cout << parameter.value << std::endl; }
 };

如果您只想启用/禁用该print()功能,则必须对其进行模板化;举例

template <typename U = T>
std::void_t<decltype(U::value)> print()
 { std::cout << parameter.value << std::endl; }

或者也

template <typename U = T>
std::void_t<decltype(U::value), std::enable_if_t<std::is_same_v<U, T>>> 
    print()
 { std::cout << parameter.value << std::endl; }

如果你想确保没有人可以“劫持”解释模板类型调用的方法

testClass<paramtype3>{}.print<paramtype1>():

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何包含自定义模板中的帮助文件?

来自分类Dev

Angular2中列表组件的自定义模板(不包含ng-content的包含)

来自分类Dev

如何在Google表格中选择包含通过自定义公式过滤的某些单词的行

来自分类Dev

如何添加自定义类型定义?

来自分类Dev

如何添加自定义类型定义?

来自分类Dev

如何在angular 2中包含打字稿自定义类型定义?

来自分类Dev

如何自定义或模板化bbpress?

来自分类Dev

如何制作nbconvert自定义模板

来自分类Dev

我应该如何实现具有某些(相同)类型的实例的自定义计数器?

来自分类Dev

如何在不访问.ASP文件的情况下自定义Volusion模板

来自分类Dev

如何在不访问.ASP文件的情况下自定义Volusion模板

来自分类Dev

如何包含自定义的php文件?

来自分类Dev

如何在WordPress中自定义帖子类型的单页中获取评论模板

来自分类Dev

Wordpress如何在自定义帖子类型中使用主页上的模板

来自分类Dev

如何设置我的Wordpress模板结构以处理我的自定义帖子类型

来自分类Dev

如何设置我的Wordpress模板结构以处理我的自定义帖子类型

来自分类Dev

Wordpress:如何使用自定义查询获取不包含特定类别的帖子

来自分类Dev

JAXB生成实现自定义接口的某些类型的类

来自分类Dev

JQuery的不Django的自定义templatetag的模板工作

来自分类Dev

WordPress添加自定义页面而不添加模板

来自分类Dev

如何创建自己的包含图像或音频文件的自定义文件类型

来自分类Dev

如何从包含自定义类型的可观察数组中检索值?

来自分类Dev

WPML和自定义帖子类型存档模板

来自分类Dev

Wordpress自定义帖子类型分类模板

来自分类Dev

Drupal 8自定义模板内容类型表单页面

来自分类Dev

WPML和自定义帖子类型存档模板

来自分类Dev

找不到自定义帖子类型模板

来自分类Dev

创建自定义帖子类型的模板

来自分类Dev

Drupal 8自定义模板内容类型表单页面

Related 相关文章

  1. 1

    如何包含自定义模板中的帮助文件?

  2. 2

    Angular2中列表组件的自定义模板(不包含ng-content的包含)

  3. 3

    如何在Google表格中选择包含通过自定义公式过滤的某些单词的行

  4. 4

    如何添加自定义类型定义?

  5. 5

    如何添加自定义类型定义?

  6. 6

    如何在angular 2中包含打字稿自定义类型定义?

  7. 7

    如何自定义或模板化bbpress?

  8. 8

    如何制作nbconvert自定义模板

  9. 9

    我应该如何实现具有某些(相同)类型的实例的自定义计数器?

  10. 10

    如何在不访问.ASP文件的情况下自定义Volusion模板

  11. 11

    如何在不访问.ASP文件的情况下自定义Volusion模板

  12. 12

    如何包含自定义的php文件?

  13. 13

    如何在WordPress中自定义帖子类型的单页中获取评论模板

  14. 14

    Wordpress如何在自定义帖子类型中使用主页上的模板

  15. 15

    如何设置我的Wordpress模板结构以处理我的自定义帖子类型

  16. 16

    如何设置我的Wordpress模板结构以处理我的自定义帖子类型

  17. 17

    Wordpress:如何使用自定义查询获取不包含特定类别的帖子

  18. 18

    JAXB生成实现自定义接口的某些类型的类

  19. 19

    JQuery的不Django的自定义templatetag的模板工作

  20. 20

    WordPress添加自定义页面而不添加模板

  21. 21

    如何创建自己的包含图像或音频文件的自定义文件类型

  22. 22

    如何从包含自定义类型的可观察数组中检索值?

  23. 23

    WPML和自定义帖子类型存档模板

  24. 24

    Wordpress自定义帖子类型分类模板

  25. 25

    Drupal 8自定义模板内容类型表单页面

  26. 26

    WPML和自定义帖子类型存档模板

  27. 27

    找不到自定义帖子类型模板

  28. 28

    创建自定义帖子类型的模板

  29. 29

    Drupal 8自定义模板内容类型表单页面

热门标签

归档