我想编写一个模板函数,该函数使用std::stack<T>
和T
的实例来做某事,例如:
template<class StackType> inline
bool some_func( StackType const &s, typename StackType::value_type const &v ) {
// ...
}
我通过引用传递
v
的原因当然是为了针对StackType::value_type
是struct
或class
而不是按值复制整个对象的情况进行优化。但是,如果
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/