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