Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > [0x00] List-initialization в 2010-й студии


Автор: borisbn 2.3.2011, 09:56
День добрый !
Хотел поизучать новый стандарт (черновик, ессно). Нашёл там такую возможность
Цитата

std::map<std::string,int> anim = { {"bear",4}, {"cassowary",2}, {"tiger",7} };

попробовал скомпилировать такое в 2010-й студии - получаю ошибку
Цитата

error C2552: 'anim' : non-aggregates cannot be initialized with initializer list

пробовал попроще
Код

std::vector< int > v = { 1, 2 };

то же самое.
MSDN на эту ошибку говорит, что инициализироваться таким образом могут только Aggregates, а именно
Цитата

Aggregates are defined as: 

  • Arrays
  • Classes, structures, and unions that do not have: 

    •   Constructors
    •   Private or protected members
    •   Base classes
    •   Virtual functions




Вопрос: это я что-то не так делаю, или это M$ не до конца поддержали новый стандарт ?

P.S. Если у кого-нибудь есть gcc с поддержкой 0x00 - не могли бы Вы проверить в нём список инициализации для вектора. Спасибо.

Автор: Daevaorn 2.3.2011, 10:01
Что такое 0x00?

Автор: boostcoder 2.3.2011, 10:07
Цитата(borisbn @  2.3.2011,  09:56 Найти цитируемый пост)
Если у кого-нибудь есть gcc с поддержкой 0x00

в подписи.

Автор: borisbn 2.3.2011, 10:58
Цитата(Daevaorn @  2.3.2011,  10:01 Найти цитируемый пост)
Что такое 0x00?

то же самое, что и tr1


Цитата(boostcoder @  2.3.2011,  10:07 Найти цитируемый пост)
в подписи.

спасибо, не сообразил smile
проверил - там всё работает
http://liveworkspace.org/code/e8c355778a2a110cef32bca1fa2c8d8f


P.S. нашёл в M$VC, что можно так инициализировать массив типа array
Код

std::tr1::array< int 4 > ai = { 1, 2, 3 }; 


P.P.S. Опять же не нашёл в студии новых классов thread, future, mutex и т.д., а в gcc (thanx 2 boostcoder) есть. Это M$ не сделали или я плохо искал ?

Автор: Abyx 2.3.2011, 11:53
borisbn, в msvc C++0x реализован не полностью. Читайте примечания к выпуску.

Автор: borisbn 2.3.2011, 15:02
Daevaorn, я ступил, sorry. конечно не 0x00, а C++0x

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)