Поддерживает ли VS2010 «управление функциями, сгенерированными компилятором»? - PullRequest
2 голосов
/ 13 декабря 2011
class NonCopyable
{
public:
    NonCopyable() = default;
    NonCopyable(const NonCopyable&) = delete;
    NonCopyable& operator=(const NonCopyable&) = delete;
};

Я пробовал приведенный выше код с VS2010, и он не проходит компиляцию.

1>c:\temp\app1\app1\app1.cpp(12): error C2065: 'default' : undeclared identifier
1>c:\temp\app1\app1\app1.cpp(12): error C2253: 'NonCopyable' : pure specifier or abstract override specifier only allowed on virtual function
1>c:\temp\app1\app1\app1.cpp(13): error C2059: syntax error : ';'
1>c:\temp\app1\app1\app1.cpp(13): error C2238: unexpected token(s) preceding ';'
1>c:\temp\app1\app1\app1.cpp(14): error C2059: syntax error : ';'
1>c:\temp\app1\app1\app1.cpp(14): error C2238: unexpected token(s) preceding ';'
1>
1>Build FAILED.

Вопрос> Насколько я знаю, default и delete - это новые функциидля C ++ 0x.VS2010 поддерживает эти новые стандарты?

// обновлено - поддерживается gcc версии 4.5.2 //

// gcc версии 4.5.2 (Ubuntu / Linaro 4.5.2-8ubuntu4)

$ ~/Documents/C++ $ g++ -o t2 t2.cpp -std=c++0x

1 Ответ

2 голосов
/ 13 декабря 2011

Нет, к сожалению VC2010 нет.Он даже не поддерживает автоматически сгенерированные конструкторы перемещения.

Вот список функций C ++ 11, поддерживаемых VC2010. Обратите внимание, что некоторые из них поддерживаются только частично.

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