开发者

C++0x Peer Constructor in VC2010

开发者 https://www.devze.com 2023-01-18 23:56 出处:网络
According to the C++0x spec, the following is legal class A { A(int i) : x(i) {} A() : A(0) {} 开发者_JAVA百科int x;

According to the C++0x spec, the following is legal

class A {
    A(int i) : x(i) {}
    A() : A(0) {}
    开发者_JAVA百科int x;
};

But it fails to compile ("A" is not a nonstatic data member or base class of class "A") in VC 2010. Anyone know what's wrong?


Visual C++ 2010 (also known as VC++ 10.0) as of this writing does not support delegating constructors, which is what your code snippet requires. VC++ 10.0 only has partial support for C++0x, and as of this writing, no compiler has implemented the entire C++0x feature set (although that will change soon, especially once the C++0x standard is finalized).

Scott Meyers have a summary of C++0x support in gcc and MSVC compilers. Here's another list of C++0x feature support in different compilers. Also, a list of C++0x features supported in Visual C++ 2010 straight from the horse's mouth.

For now, initialize all members directly in the initialization list of your constructors:

class A
{ 
public:
    A(int i) : x(i) {} 
    A() : x(0) {} 
private:
    int x; 
};


Visual Studio doesn't support all of 0x yet. (And nobody should be expected to; 0x isn't finalized.)

This describes what 0x features are implemented in VS 2010.


MSVC++ 2010 doesn't have support for delegating constructor

This page lists C+ 0x features and their support in popular compilers.

0

精彩评论

暂无评论...
验证码 换一张
取 消