10
實施例:成員聲明`decltype(name)name;`允許在本地結構中第一個名稱引用封閉範圍?
int main()
{
int a = 0;
struct X
{
decltype(a) a;
};
return 0;
}
的decltype(a)
指main
本地a
,而構件它聲明共享相同的名稱。
Clang編譯沒有任何問題,MSVC14也是如此。
G++抱怨它,加入-fpermissive
使得它傳遞雖然
prog.cc:6:21: error: declaration of 'int main()::X::a' [-fpermissive]
decltype(a) a;
^
prog.cc:3:9: error: changes meaning of 'a' from 'int a' [-fpermissive]
int a = 0;
哪些行爲是符合標準的?
你爲什麼要那樣做? –
這是不合格的,不需要診斷。 –
@ JohannesSchaub-litb ouch,有沒有理由呢? –