我想寫一個模板函數,它與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