2
class __declspec(dllexport) DI_1
{
DI_1& operator = (DI_1 &){};
};
class DI_2
{
DI_2& operator = (DI_2 &){};
};
int main()
{
DI_1 a;
DI_2 b;
return 0;
}
當VS 2010/2012
編譯下面的代碼提供了以下錯誤:導出課程有什麼不同?
error C4716: 'DI_1::operator=' : must return a value
,而我期待它返回相同的錯誤爲DI_2
類也。
這是一個編譯器bug沒有標記DI_2
類也是一個錯誤?
如果不是,有人可以解釋原因嗎?
編輯︰ 我確認與Solaris編譯器,它會引發這兩個類的錯誤。
一旦您嘗試調用b的'operator =',就會引發錯誤。但是,從技術上講,它只是一個編譯器警告(它會自動提升爲錯誤)。沒有回報是未定義的行爲。也許dllexport強加更嚴格的規則。 – s3rius
聞起來像一個bug,發佈到connect.microsoft.com –