В MSDN здесь дан список фич C++0x, доступный в VC++ 2010. Но эксперименты показывают, что на самом деле поддерживается несколько больше. Непример - alternative function syntax и типизированные enum-ы. Где можно узнать самый полный список фич C++0x, который поддерживается VC++ 2010?
_DEN_ Это зачем? Страуструп по-моему писал, что значение и так unsigned int. Да и если даже не так, в чём смысл взятия указателя на enum? Разве копирование int затратно?
Booster Это в C++03. В C++0x как раз тип можно задавать самому. Смысл в том, что использование енама от C++03 в качестве чисто компайлтаймовых констант не дает возможности работать с типами - помимо unsigned int может хотеться работать с int, bool, std::size_t, и так далее. Некоторые люди не любят работать со статическими константами вместо енамов из-за того, что константы имеют право инстанцироваться, а енам - чисто компайлтаймовые значения.
_DEN_ Тады да, удобно иметь enum c типом std::string. Правда я не представляю как std::string может быть компайл тайм значением.
_DEN_ Тогда оно не интересно, привести к другому интегральному типу можно и так. А привидения всё равно не избежать, так enum это отдельный тип и без приведения компилятор ругнёт. По-моему бесполезная вещь.
Booster Смысл в том, что enum сам по себе это не int. enum это enum. Просто он умеет implicit кастоваться в int. А эта фича позволяет явно задать underlying тип.
Booster Типизированные енумы - очень даже полезная вещь. Если диапазон значений енума вписывается в разрядность < 32 (uchar, ushort), это позволяет сэкономить на размере структур, содержащих такой енум-член. С другой стороны, enum : __int64 позволяет определять 64-битные значения енума.
омг какой нелепый оффтоп =\ лучше бы в самом деле привели список фич С++0х которые поддерживает мсвс насчет типизованых enum'ов - их смысл в том, что для enum Foo : T, sizeof(Foo)==sizeof(T), значит их можно использовать как поля структур в случаях когда размер полей фиксирован.
green Выравнивание и производительность уже никому не интересны? Да и нет там никакого uchar, это же просто константное компайл тайм значение. С трудом представляю себе enum более 4 миллиардов значений, но даже если это и необходимо, то не вижу препятствий. Сейчас заглянул в Страуструпа, он считает приведение enum-ов в интергральные типы, не слишком удачной идей. Да и глупо ради этого расширять язык.
GoldFinch Да, в этом есть смысл для POD структур, но не ужели это так важно, что-бы вводить новый синтаксис? Мелко как-то.
Booster типизованные enum'ы гораздо удобнее чем Код (Text): struct Foo { static const unsigned char a = 0; static const unsigned char b = 1; static const unsigned char c = 2; static const unsigned char d = 3; .................. }