【发布时间】:2014-12-09 11:52:49
【问题描述】:
使用类型特征是否有任何性能影响?
更准确地说,以下评估是恒定时间吗?并且编译器可以优化出以下一些情况吗?
考虑这样的代码:
template<typename T> void Function()
{
if(std::is_pointer<T>::value == true)
DoSmth();
}
Function<int*>();
编译器是否会优化此类代码以有效地(在生成的二进制文件中)成为类似的东西?
template<> void Function<int*>()
{
DoSmth();
}
【问题讨论】:
-
你的例子没有反映你开始的问题。
-
@rubenvb 以什么方式不呢?对我来说似乎是这样。
-
@hvd 问题询问类型特征是否会导致性能损失。该示例询问编译器是否可以优化常量(即编译时)条件表达式。这些不是一回事。
-
@hvd 我的意思是这个问题与类型特征无关。
-
@rubenvb 我只是没看到。不过,这不值得讨论。如果 OP 同意该问题不清楚,则 OP 可能会进行编辑。如果 OP 没有看到问题不清楚,则 OP 可能无法以符合您期望的方式进行编辑。无论哪种方式,它并不取决于你或我的想法。 :)