Будет ли хороший компилятор C ++ оптимизировать ссылку?

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

14
задан Paul J. Lucas 4 July 2014 в 02:21
поделиться