If you utilize structured bindings like so
auto [a, b, c] = std::make_tuple(1, 10.0, "string object"s);
then will the copies from the returned tuple be elided and the objects go straight into a
, b
and c
or will the initializations be move constructions from the individual tuple elements? I doubt that this would cause a copy to happen but I am not sure about whether the description of mandatory copy elision in the standard handles this case.