Я хочу написать шаблонную функцию, которая что-то делает с std :: stack
и экземпляром T
, например:
template<class StackType> inline
bool some_func( StackType const &s, typename StackType::value_type const &v ) {
// ...
}
Причина, по которой я передаю v
по ссылке, конечно, для оптимизации для случая, когда StackType :: value_type
является структурой
или классом
, а не копирует весь объект по стоимости.
Однако, если StackType :: value_type
является «простым» типом, например int
, то, конечно, лучше просто передать его по значению.
Вопрос в следующем: для такого типа, как int
, который станет int const &
в качестве формального аргумента в приведенной выше функции, будет ли компилятор оптимизировать ссылку и просто передать ее по значению?