C ++ 0x Одноранговый конструктор в VC2010 - PullRequest
5 голосов
/ 03 октября 2010

Согласно спецификации C ++ 0x , допустимо следующее

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

Но он не компилируется ("A" is not a nonstatic data member or base class of class "A") в VC 2010. Кто-нибудь знает, что не так?

Ответы [ 3 ]

8 голосов
/ 03 октября 2010

Visual C ++ 2010 (также известный как VC ++ 10.0) на момент написания этой статьи не поддерживает делегирование конструкторов, чего требует ваш фрагмент кода. VC ++ 10.0 имеет только частичную поддержку C ++ 0x, и на момент написания этой статьи ни один компилятор не реализовал весь набор функций C ++ 0x (хотя это скоро изменится, особенно после завершения разработки стандарта C ++ 0x).

Скотт Мейерс имеет сводку поддержки C ++ 0x в компиляторах gcc и MSVC . Вот еще один список поддержки C ++ 0x в различных компиляторах . Кроме того, список функций C ++ 0x, поддерживаемых в Visual C ++ 2010, прямо из уст .

На данный момент инициализируйте все элементы непосредственно в списке инициализации ваших конструкторов:

class A
{ 
public:
    A(int i) : x(i) {} 
    A() : x(0) {} 
private:
    int x; 
};
0 голосов
/ 03 октября 2010

MSVC ++ 2010 не поддерживает делегирующий конструктор

На этой странице перечислены функции C + 0x и их поддержка в популярных компиляторах.

0 голосов
/ 03 октября 2010

Visual Studio пока не поддерживает все 0x. (И никто не должен ожидать; 0x не завершено.)

Здесь описано, какие функции 0x реализованы в VS 2010.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...