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