【发布时间】:2016-07-19 13:08:45
【问题描述】:
请看下面的代码(看直播here):
#include <iostream>
#include <tuple>
#include <type_traits>
#include <utility>
struct S {
int&& v;
};
int main() {
std::tuple<int&&> t(1);
std::cout << std::is_same<int, decltype(std::get<0>(t))>{} << std::endl;
std::cout << std::is_same<int&, decltype(std::get<0>(t))>{} << std::endl;
std::cout << std::is_same<int&&, decltype(std::get<0>(t))>{} << std::endl;
S s{1};
std::cout << std::is_same<int&&, decltype(s.v)>{} << std::endl;
}
我希望看到输出 0 0 1 1,但 GCC 和 clang 都给出了输出 0 1 0 1。真的很迷茫。谁能给我一个解释?
【问题讨论】:
标签: c++ c++11 tuples language-lawyer decltype