2013-07-02 130 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)。 –

相关问题