2013-11-19 8 views
5

Есть ли преимущество в использовании функции C++ 14 decltype (auto) против auto & & для хранения cv-классификатора?decltype (auto) vs auto && для сохранения спецификатора cv

auto v = const_return_func() //strip the constness 
auto&& v = const_return_func() 
decltype(auto) = const_return_func() 
+7

Все три формы служат для разных целей - 'auto' всегда * значение,' auto && 'всегда * ссылка, а' decltype (auto) 'может быть либо в зависимости от инициализатора. – Xeo

+0

Пожалуйста, откройте новый вопрос вместо добавления к нему и измените заголовок. Если вы нажмете «edit», вы можете откат к предыдущей версии. – Potatoswatter

ответ

2

Предположив функцию возвращает const & ссылку, так как const объекта и const && довольно бесполезные возвращаемые типы, decltype(auto) будут делать то же самое, как auto &&.

Для локальных переменных обычно не следует использовать decltype(auto), поскольку он не имеет особого варианта использования и скрывает, является ли объявленный объект объектом или ссылкой.

Смежные вопросы