【发布时间】:2018-06-23 00:40:48
【问题描述】:
当我们这样做时......
template <typename T>
void foo(T x)
{
if (is_fundamental<T>::value)
{
...
} else
{
...
}
}
我认为if 语句(以及is_fundamental<T>::value)是在运行时评估的,对吗?
如果是,有没有办法在编译时进行此评估?我想要类似的东西......
template <primitive_typename T>
void foo(T x)
{
...
}
template <noPrimitive_typename T>
void foo(T x)
{
...
}
一种解决方案是重载所有可能的原始类型,但这并不是一个真正令人满意的解决方案,因为它需要多次复制原始类型的代码。有没有办法用一个类型名来引用所有原语?
【问题讨论】:
-
@StoryTeller 感谢您的链接。链接中的解决方案意味着重载(模板专业化)每个可能的原始类型的函数,对吗?这不是很理想。有没有办法用类型名引用所有原语?
标签: c++ class c++11 templates primitive-types