当前位置:  开发笔记 > 编程语言 > 正文

C++识别模板参数

如何解决《C++识别模板参数》经验,为你挑选了1个好方法。

我想知道有没有办法识别模板参数?例如,假设我想基于模板参数初始化变量.原型示例如下

template 
      void initialise(T a)
      {
        if(T==int)a=0;
        else if(T=double)a=0.0;
        else if(T=complex)a=T(0.,0);
        else print("unknown type"); 
      }

我的问题是如何识别模板参数"T"?或者,我是否需要获得预处理器指令的帮助?这可能是一个重复的问题,但我找不到它的答案.任何建议将不胜感激.



1> juanchopanza..:

这是使用函数模板将参数"重新设置"为零的方法:

template 
void initialise(T& a)
{
  a = T(); // or T{};
}

如果要将其限制为算术类型,可以使用SFINAE和std::is_arithmetic(浮点和整数类型),以及专门化std::complex.

template 
typename enable_if::value, void >::type
void initialise(T& a)
{
  a = T();
}

template
void initialise(std::complex& a)
{
  a = T();
}

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有