我需要实现检查类型相等的自包含编译时函数(没有参数bool eqTypes<T,S>()
的函数模板)。
自包含意味着不依赖于库。
我不擅长这些。我试过了,但那不是我需要的。
template<typename T>
bool eq_types(T const&, T const&) {
return true;
}
template<typename T, typename U>
bool eq_types(T const&, U const&) {
return false;
}
3条答案
按热度按时间cxfofazt1#
这很简单,只需要定义一个类型trait和一个helper函数:
这是一个live example。
在C++11中,如果允许使用
std::false_type
和std::true_type
,则应按以下方式重写上述代码:请注意,类型trait
std::is_same
(它做的事情与此几乎相同)作为标准库的一部分提供。epggiuax2#
下面是如何在C语言中实现这一点,而不需要任何神奇的GCC扩展:
例如:
如果
y
不是int
,将触发编译错误。有关说明,请参见here。
f3temu5u3#