Применяется ли принудительное копирование для декомпозиции посредством структурированных привязок? Какое из следующих случаев относится к?
// one
auto [one, two] = std::array<SomeClass>{SomeClass{1}, SomeClass{2}};
// two
auto [one, two] = std::make_tuple(SomeClass{1}, SomeClass{2});
// three
struct Something { SomeClass one, two; };
auto [one, two] = Something{};
Я подозреваю, что только третий случай разрешает копирование, так как первые два будут "разложены" через std::get<>
и std::tuple_size<>
и std::get<>
возвращают значения x, когда аргументы равны rvalues
Цитата из стандарта тоже понравилась бы!