C++11 use in Chromium
2014-09-27 10:27 pmhttp://chromium-cpp.appspot.com/ перечисляет фичи C++11, которые разрешены и забанены в проекте Google Chrome. Забавно, кстати, что вариадические шаблоны в C++11 делают ненужным специализированный велосипед с квадратными колёсами препроцессор pump, который был написан в Google, чтобы смягчить отсутствие этих самых вариадических шаблонов в C++98.
Среди забаненных фич (например constexpr, move references, char16_t, char32_t, Unicode literals) основная причина бана — неподдержка в компиляторе MSVC2013. По-моему, это добрая половина нового стандарта, и тут не фичи C++11 нужно банить, а сам компилятор. Ну или для всех практических целей считать, что этот компилятор поддерживает только режим C++98.
Особенно с учётом того, что в GCC недавно была добавлена поддержка SEH ABI для исключений (ранее gcc под виндой обрабатывал исключения только в режимах dwarf2 и sjlj. dwarf2 хорош в Linux, а в винде его использование приводило к падению процесса во время раскрутки стека на первой же функции, сгенерированной компилятором MSVC; а sjlj работает через setjump/longjump — что очень медленно, даже когда исключения не генерируются).
Среди забаненных фич (например constexpr, move references, char16_t, char32_t, Unicode literals) основная причина бана — неподдержка в компиляторе MSVC2013. По-моему, это добрая половина нового стандарта, и тут не фичи C++11 нужно банить, а сам компилятор. Ну или для всех практических целей считать, что этот компилятор поддерживает только режим C++98.
Особенно с учётом того, что в GCC недавно была добавлена поддержка SEH ABI для исключений (ранее gcc под виндой обрабатывал исключения только в режимах dwarf2 и sjlj. dwarf2 хорош в Linux, а в винде его использование приводило к падению процесса во время раскрутки стека на первой же функции, сгенерированной компилятором MSVC; а sjlj работает через setjump/longjump — что очень медленно, даже когда исключения не генерируются).