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