考虑一个例子:
#include <iostream>
#include <type_traits>
#include <tuple>
int main() {
auto tup = std::make_tuple(1, 2);
auto [ a, b ] = tup;
decltype(auto) e = a;
std::cout << std::boolalpha << std::is_reference_v<decltype(e)> << std::endl;
}
clang (output: false
) 和gcc (output: true
) 在这个简单的案例中存在分歧。请记住,例如这个问答应该e
是参考还是 gcc 错误?或者代码格式不正确?