воскресенье, 29 мая 2011 г.

C++11 и Qt

Известно, что уже сейчас мы можем использовать C++11 c Qt 4.7, однако в Qt 4.8 в нашем распоряжении будут еще и новые макросы:

Q_COMPILER_RVALUE_REFS
Q_COMPILER_DECLTYPE
Q_COMPILER_VARIADIC_TEMPLATES
Q_COMPILER_AUTO_TYPE
Q_COMPILER_EXTERN_TEMPLATES
Q_COMPILER_DEFAULT_DELETE_MEMBERS
Q_COMPILER_CLASS_ENUM
Q_COMPILER_INITIALIZER_LISTS
Q_COMPILER_LAMBDA
Q_COMPILER_UNICODE_STRINGS

Также, в Qt 4.8 нас порадует новый конструктор у QVector, QList, и QStringList, который позволит инициализировать объект следующим образом:

QVector<int> data { 1, 2, 10, 42, 50, 123 };
QStringList list = { QLatin1String("foo"), QLatin1String("bar") };

Итак, для использования новых возможностей, предоставляемых C++11, добавьте в файл Qt проекта строку:

QMAKE_CXXFLAGS += -std=c++0x

Подробнее о новых возможностях можно узнать на сайте labs.qt.nokia.com.

2 комментария:

  1. Qt 4.8 нас порадует новый конструктор у QVector, QList, и QStringList

    Qt и конструктор перечисленных классов тут не при чем. точнее сказать, они даже не в курсе о том, что компилятор с поддержкой с++11 будет с ними вытворять :)
    а вытворять он может многое, и даже то, чего в с++03 было невозможно в принципе.
    подробней об этом можно прочесть тут: http://akrzemi1.wordpress.com/2011/06/29/brace-brace/

    сам осваивал brace-initializers по этой записи.

    ОтветитьУдалить
  2. хм.. интересно. спасибо за ссылку.

    ОтветитьУдалить