Extensão vitalícia de um retorno initializer_list

Então, eu tenho um lambda que é o tipo de retorno éauto e estou tendo problemas com o suporte da matriz para uminitializer_list sendo destruído aqui:

const auto foo = [](const auto& a, const auto& b, const auto& c) { return {a, b, c}; };

Eu vou usar o lambda assim:

auto bar = foo(1, 2, 3);

for(const auto& i : bar) cout << i << endl;

Um trabalho em que estou trabalhando tem como parte do padrão de codificação que todas as lambdas são declarações únicas (sinta-se à vontade para expressar sua indignação.) Acho que posso contornar isso:

Dandofoo um tipo de retorno devector int, mas isso atrapalha o quão bem genérico é:const auto foo = [](const auto& a, const auto& b, const auto& c) -> vector<int> { return {a, b, c}; }Apenas escrevendo uma função de modelo que constrói umvector<T> e retorna:template <typename T> vector<T> foo(const T& a, const T& b, const T& c){ return {a, b, c}; }

É possível coagir essas variáveis em um contêiner, cujo apoio não será destruído tudo em uma linha para que eu possa manter o lambda com umauto tipo de retorno?

questionAnswers(1)

yourAnswerToTheQuestion