Является ли (1) неопределенным поведением или первый элемент пары всегда оценивается первым?
#include <array>
#include <utility>
int bar(std::array<int, 3>&& ) {
return 1;
}
std::pair<std::array<int, 3>, int> foo() {
std::array<int, 3> a;
return { a, bar(std::move(a)) }; // (1)
}
В качестве примечания, будет ли использование return make_pair(a, bar(std::move(a)));
вместо этого другим?