auto [u, v] = s
相当于如下代码
auto e = s;
alias u = e.member1;
alias v = e.member2;
注意,此时临时变量e
是个拷贝,u
和v
相当于别名
int main() {
struct Y {
int a;
std::string b;
};
auto y = Y{10, "hi"};
const auto &[a, b] = y;
static_assert(std::is_same_v<decltype(a), const int>);
static_assert(std::is_same_v<decltype(b), const std::string>);
}
const auto &[a, b] = y
中,生成的临时变量是const &
,没有拷贝产生,a
和b
也是const
修饰的别名