время жизни возвращаемого значения std :: initializer_list
НКУ»Реализация с разрушаетstd::initializer_list
массив, возвращаемый функцией в конце возвращаемого полного выражения. Это правильно?
В обоих тестовых примерах этой программы показаны деструкторы, выполняющиеся до того, как можно будет использовать значение:
#include
#include
struct noisydt {
~noisydt() { std::cout < "destroyed\n"; }
};
void receive( std::initializer_list< noisydt > il ) {
std::cout < "received\n";
}
std::initializer_list< noisydt > send() {
return { {}, {}, {} };
}
int main() {
receive( send() );
std::initializer_list< noisydt > && il = send();
receive( il );
}
trailing-return-type, потому что вывод лямбда-типа возврата происходит только тогда, когда возвращается выражение, а список фигурных скобок не является выражением.