char数组的模板类型推导

Template type deduction for char array

template<typename T>
class X;

int main() {
    X<decltype("")> x;
}

为什么 g++ 将 T 推导为 const char (&)[1] 而不是简单地 const char[1]

与作为右值的所有其他文字不同,字符串文字是左值。 decltype 应用于左值表达式可为您提供参考,因此 const char (&)[1] 是正确的行为。