考虑以下演示程序。
#include <iostream>
namespace N
{
struct A
{
static int n;
};
A A;
}
int N::A::n = 10;
int main()
{
std::cout << N::A::n << '\n';
std::cout << N::decltype( N::A )::n << '\n';
return 0;
}
该程序使用 gcc 8.3 成功编译,例如www.ideone.com。
但是,如果使用 MS VS 2019 运行此程序,则编译器会发出decltype( N::A )
与嵌套名称说明符中的记录相关的错误。如果要删除前面的名称N::
,则程序编译成功。
是 MS VS 编译器的错误还是嵌套名称说明符写错了?