Visual Studio 2010: Список фич C++0x

Тема в разделе "LANGS.C", создана пользователем _DEN_, 14 фев 2010.

  1. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    В MSDN здесь дан список фич C++0x, доступный в VC++ 2010. Но эксперименты показывают, что на самом деле поддерживается несколько больше. Непример - alternative function syntax и типизированные enum-ы. Где можно узнать самый полный список фич C++0x, который поддерживается VC++ 2010?
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    _DEN_
    типизированные enum'ы и в 2008 есть вроде
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    GoldFinch

    Да, про енамы не знал, действительно работает в 2008. Но это всеравно не C++03 :)
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Что такое типизированные enum-ы?
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Код (Text):
    1. enum foo : unsigned int
    2. {
    3.     a,
    4.     b,
    5.     c
    6. };
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Это зачем? Страуструп по-моему писал, что значение и так unsigned int. Да и если даже не так, в чём смысл взятия указателя на enum? Разве копирование int затратно?
     
  7. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Это в C++03. В C++0x как раз тип можно задавать самому.

    Смысл в том, что использование енама от C++03 в качестве чисто компайлтаймовых констант не дает возможности работать с типами - помимо unsigned int может хотеться работать с int, bool, std::size_t, и так далее. Некоторые люди не любят работать со статическими константами вместо енамов из-за того, что константы имеют право инстанцироваться, а енам - чисто компайлтаймовые значения.
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Тады да, удобно иметь enum c типом std::string. Правда я не представляю как std::string может быть компайл тайм значением.
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Если не ошибаюсь, можно юзать только целочисленные базовые типы.
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Тогда оно не интересно, привести к другому интегральному типу можно и так. А привидения всё равно не избежать, так enum это отдельный тип и без приведения компилятор ругнёт. По-моему бесполезная вещь.
     
  11. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Booster

    Смысл в том, что enum сам по себе это не int. enum это enum. Просто он умеет implicit кастоваться в int. А эта фича позволяет явно задать underlying тип.
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    _DEN_
    Я думал не умеет. ^). Но тогда оно умеет и в другие интегральные типы.
     
  13. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Booster
    Типизированные енумы - очень даже полезная вещь. Если диапазон значений енума вписывается в разрядность < 32 (uchar, ushort), это позволяет сэкономить на размере структур, содержащих такой енум-член. С другой стороны, enum : __int64 позволяет определять 64-битные значения енума.
     
  14. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    омг какой нелепый оффтоп =\
    лучше бы в самом деле привели список фич С++0х которые поддерживает мсвс

    насчет типизованых enum'ов - их смысл в том, что для enum Foo : T,
    sizeof(Foo)==sizeof(T), значит их можно использовать как поля структур в случаях когда размер полей фиксирован.
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    green
    Выравнивание и производительность уже никому не интересны? Да и нет там никакого uchar, это же просто константное компайл тайм значение.

    С трудом представляю себе enum более 4 миллиардов значений, но даже если это и необходимо, то не вижу препятствий.

    Сейчас заглянул в Страуструпа, он считает приведение enum-ов в интергральные типы, не слишком удачной идей. Да и глупо ради этого расширять язык.
     
  16. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    Да, в этом есть смысл для POD структур, но не ужели это так важно, что-бы вводить новый синтаксис? Мелко как-то.
     
  17. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    типизованные enum'ы гораздо удобнее чем
    Код (Text):
    1. struct Foo
    2. {
    3.     static const unsigned char a = 0;
    4.     static const unsigned char b = 1;
    5.     static const unsigned char c = 2;
    6.     static const unsigned char d = 3;
    7. ..................
    8. }
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    Зачем это?
     
  19. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Booster
    затем чтобы у константы был нужный тип
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    GoldFinch
    Это нужно настолько редко, что стремится к нулю.