[英]C++ compile-time type comparsion
考虑函数foo
。
template <typename T>
void foo() {
do_something();
if (T == int) {
do_somehting_else();
}
}
换句话说,我想要它do_something()
然后,如果类型是int
, do_something_else()
当然if (T == int) {
将无法编译。 仍然:有没有办法在C ++中比较编译时的类型?
您可以使用
#include <type_traits>
// ...
template <typename T>
void foo() {
do_something();
if (std::is_same<T,int>::value) {
do_somehting_else();
}
}
您可以在此处了解有关类型特征的更多信息。
只需使用模板专业化。
template <typename T> void foo() { do_something(); }
template<> void foo<int>() { do_something(); do_something_else(); };
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.