Я хочу написать функцию шаблона, которая делает что-то с 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&
в качестве формального аргумента в вышеприведенной функции, будет ли компилятор оптимизировать ссылку и просто передать ее по значению?