[英]Using decltype in a nested-name-specifier
考虑以下演示程序。
#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 编译器的错误还是嵌套名称说明符写错了?
decltype-specifier永远不会出现,除非在nested-name-specifier的开头。 毕竟,它指定了一个特定的类型,之后不需要名称查找来解释它。 GCC 接受代码是错误的:通过实验,在检查它们是否存在之后似乎只是忽略了任何前面的组件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.