【发布时间】:2016-11-15 08:41:01
【问题描述】:
为什么 std::tuple 会分解成右值引用?
#include <tuple>
template <typename, typename> struct same_type;
template <typename T> struct same_type<T, T> {};
void foo() {
std::tuple tuple(1, 'a', 2.3, true);
auto[i, c, d, b] = tuple;
same_type<decltype(i), int &&>{};
same_type<decltype(c), char &&>{};
same_type<decltype(d), double &&>{};
same_type<decltype(b), bool &&>{};
}
使用 gcc 主干编译没有错误。 我本来希望使用普通类型,例如
same_type<decltype(i), int>{};
【问题讨论】: