Известно, что уже сейчас мы можем использовать 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
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.
Qt 4.8 нас порадует новый конструктор у QVector, QList, и QStringList
ОтветитьУдалитьQt и конструктор перечисленных классов тут не при чем. точнее сказать, они даже не в курсе о том, что компилятор с поддержкой с++11 будет с ними вытворять :)
а вытворять он может многое, и даже то, чего в с++03 было невозможно в принципе.
подробней об этом можно прочесть тут: http://akrzemi1.wordpress.com/2011/06/29/brace-brace/
сам осваивал brace-initializers по этой записи.
хм.. интересно. спасибо за ссылку.
ОтветитьУдалить