время жизни возвращаемого значения 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, потому что вывод лямбда-типа возврата происходит только тогда, когда возвращается выражение, а список фигурных скобок не является выражением.

Ответы на вопрос(2)

Ваш ответ на вопрос