考虑功能template<typename T> void Fun(T t);
。如何分别对整数和浮点类型使用不同的实现?
我想构建块std::enable_if
,std::is_integral
,std::is_floating_point
。但我不能以优雅的方式将它们放在一起:-(。
PS我有C ++ 11可用。
请参阅cppreference.com上std :: enable_if的示例代码。
编辑:
修改了上面链接中的代码,如下所示:
#include <type_traits>
#include <iostream>
template<class T>
typename std::enable_if<std::is_integral<T>::value>::type foo(T t)
{
std::cout << "is integral" << std::endl;
}
template<class T>
typename std::enable_if<std::is_floating_point<T>::value>::type foo(T t)
{
std::cout << "is real" << std::endl;
}
int main()
{
foo(1);
foo(1.0);
}
的定义enable_if
是template< bool B, class T = void > struct enable_if;
。这为返回值类型提供了以下选项:
template<class T>
typename std::enable_if<std::is_integral<T>::value>::type foo(T t) // void return type
template<class T>
typename std::enable_if<std::is_integral<T>::value, T>::type foo(T t) // return type from template parameter
template<class T>
typename std::enable_if<std::is_integral<T>::value, size_t>::type foo(T t) // fixed return type
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句