c++ - 编译期间模板优化中的static_cast

标签 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 没有太多事情要做,但它会在编译时被优化或解决吗?

最佳答案

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

Can static_cast to same type introduce runtime overhead?

关于c++ - 编译期间模板优化中的static_cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24863422/

相关文章:

c++ - 通用引用和本地类

c++ - unique_ptr 的 deque vector 的编译器错误

c++ - 将运算符重载作为模板参数传递

c++ - 使用 uniform_int_distribution 与模数运算有什么优势?

c++ - 如何在 C++ 中计算不同的数字基数?

c++ - 模板特化站点报告 "too few template-parameter-lists"错误

css - Joomla 模板无法在 IE8 上正确显示

c++ - 这篇 cppreference.com 文章的结尾有问题

c++ - 在 std::map 中存储结构实例

c++ - 简单的 C++ 比较 if 语句