2013-07-02 67 views
1

我試圖在Visual Studio 2012使用委託構造函數更新3,但我得到一個錯誤:委派構造函數

$> cl.exe /EHsc /W4 /MTd .\bla.cpp 
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.60610.1 for x86 
Copyright (C) Microsoft Corporation. All rights reserved. 

bla.cpp 
.\bla.cpp(6) : error C2614: 'Bla' : illegal member initialization: 'Bla' is not 
a base or member 

示例源文件:

#include <iostream> 

class Bla { 
public: 
    Bla() : Bla(10) { std::cout << "bla()" << std::endl; } 
    Bla(int _n) { std::cout << "bla(int): " << _n << std::endl; } 
}; 


int main() 
{ 
    Bla b0; 
    Bla b1(10); 
} 

似乎具有worked before並在this video(從31:30開始)中描述。

有人能告訴我在Visual Studio 2012中實現委託構造函數的狀態嗎?或者我做錯了什麼?也許我的cl.exe命令?或者我需要安裝一些CTP編譯器或其他東西?

+3

或者什麼。它在你的鏈接中非常明確地提到,支持它的編譯器版本是CTP版本。 VS2013預覽版也剛剛上市,可能在秋季的某個地方發佈。 –

+0

您需要安裝2012年11月的CTP或更高版本。或者下載V2013預覽。 –

回答

0

Or do I need to install some CTP compiler or something?

確實。 VS2012的官方發佈/更新不支持委託構造函數。你必須安裝2012年11月份的CTP。

Here是VC11支持(且不支持)的C++ 11功能的摘要。

+0

您還可以下載Visual Studio 2013 Preview(這是比CTP更好的C++ 11功能的實現) –

+0

謝謝,爲答案。我認爲CTP編譯器的功能包含在VS更新中。 – guini

+0

@JohnBandela:不知道有多好。看起來在CTP中至少有一些醜陋的移動語義錯誤(至少AFAIK)。例如,參見[this](https://dl.dropboxusercontent.com/u/21007284/whyyy.png)。 –

相關問題