我想编写一个模板函数,该函数使用std::stack<T>T的实例来做某事,例如:

template<class StackType> inline
bool some_func( StackType const &s, typename StackType::value_type const &v ) {
  // ...
}

我通过引用传递v的原因当然是为了针对StackType::value_typestructclass而不是按值复制整个对象的情况进行优化。

但是,如果StackType::value_type是类似于int的“简单”类型,那么最好简单地按值传递它。

问题是:对于像int这样的类型,该类型在上面的函数中将成为int const&的形式参数,编译器是否会优化掉引用并按值传递它?

最佳答案

我在这里查看gcc优化选项http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
实际上,您的情况有一个选择:

据我所知,-O2是Linux发行版的常用选项。
因此,简短的答案是:好的编译器之一可以做

关于c++ - 好的C++编译器会优化引用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9014021/

10-09 05:02