struct A
{
int a[2] = {1, 2};
};
然而,VC++ 2014 CTP一個錯誤消息拒絕它接受?
struct A
{
int a[2] = {1, 2};
};
然而,VC++ 2014 CTP一個錯誤消息拒絕它接受?
是的,這是合法的,但VC++不支持此功能。它是in-class member initialization的uniform initialization。
當然the =
sign is optional和你的代碼是一樣的下面的代碼:
struct A
{
int a[2] {1, 2};
};
是的,它是由允許(但與新)C++ 11。具體而言,在C++ 03,一類構件的語法爲(第9.2節):
構件聲明符:
說明符純說明符選擇
說明符恆初始化選擇恆定初始化:
=常數表達式
唯一就地初始化這允許是常量表達式。在C++ 11,然而,語法已經改變(仍第9.2節):
構件聲明符:
說明符的virt說明符-SEQ 選擇純說明符選擇
說明符撐 - 或等於初始值設定選擇
這允許通常使用「大括號或相等的初始值設定項」,而不是像C++ 03中所要求的那樣僅限於常量表達式。
[請注意,這裏省略了一些不相關的語法部分,比如比特字段的規範]。
鏘是正確的。 –
像往常一樣,Clang是正確的。 – Nawaz