我想写一个模板函数,它与std::stack<T>
东西和T
一个实例,如:一个好的C++编译器会优化一个引用吗?
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&
作为形式参数,编译器是否会优化掉引用并仅通过值传递呢?
这将是一个糟糕的编译器。 – lapk
如果编译器实际上决定内联函数,无论您如何定义它,它肯定会做最有效的事情。 – enobayram