编译期间模板优化中的static_cast

时间:2014-07-21 10:56:43

标签: c++ templates

假设我有一个或多或少像这样的功能(伪代码,不是真正的代码,所以请不要考虑它有多大用处:P):

template <typename T>
T function()
{
 std::vector<size_t> a = {1, 2, 3, 4, 5};
 T r = 0;
 for (size_t i=0; i<a.size(); ++i)
 {
  r += static_cast<T>(a[i]);
 }
 return r;
}

现在我想知道如果T = size_t,编译器是否会优化static_cast。我知道如果T将是一个int,但它会在编译时被优化或解决,那么就没有多少东西了吗?

1 个答案:

答案 0 :(得分:1)

对于本机类型,任何现代编译器都应该将static_cast优化为相同类型。这是对同一个问题的另一个答案,该问题表明具有非平凡复制构造函数的类型可能会导致开销。

Can static_cast to same type introduce runtime overhead?