Как из моего личного опыта, так и из ответов на вопросы, подобные Каковы некоторые виды использования decltype (auto )? Я могу найти множество ценных примеров использования decltype(auto)
в качестве заполнителя типа возвращаемого значения функции.
Однако я серьезно изо всех сил пытаюсь придумать какой-либо допустимый (т.е. полезный, реалистичный, ценный) вариант использования decltype(auto)
переменных. Единственная возможность, которая приходит на ум, - это сохранить результат функции, возвращающей decltype(auto)
, для последующего распространения, но auto&&
можно было бы использовать и там, и это было бы проще.
Я даже просмотрел все свои проекты и эксперименты, и 391 вхождение decltype(auto)
- все это заполнители возвращаемого типа.
Итак, существуют ли реалистичные варианты использования decltype(auto)
переменных? Или эта функция полезна только при использовании в качестве заполнителя типа возвращаемого значения?
Как вы определяете «реалистичный»?
Я ищу вариант использования, который предоставляет значение (т.е. это не просто пример, показывающий, как работает функция), где decltype(auto)
- идеальный выбор по сравнению с альтернативами, такими как auto&&
или без объявления переменной вообще.
Проблемная область не имеет значения, это может быть какой-то неясный угловой случай метапрограммирования или загадочная конструкция функционального программирования. Однако этот пример должен был бы заставить меня сказать «Эй, это умно / красиво!», а использование любой другой функции для достижения того же эффекта потребует большего количества шаблонов или будет иметь какой-то недостаток.
decltype(auto)
- идеальный выбор по сравнению с альтернативами, такими какauto&&
или вообще не объявлять переменную. Домен не имеет значения, это может быть какой-то неясный угловой случай метапрограммирования. Но этот пример должен был бы заставить меня пойти Эй, это умно!, а использование любой другой функции для достижения того же эффекта потребует больше шаблонов или будет иметь какой-то недостаток. Извините, что не могу сказать точнее. - person Vittorio Romeo   schedule 10.08.2019decltype(auto)
-возвращающих функций ... но переменные сейчас меня сбивают с толку :) - person Vittorio Romeo   schedule 10.08.2019