is_numeric () против is_float () против is_int ()

Это действительно зависит от того, что вы ожидаете от фактического значения макроса. Если 201103L означает «Этот компилятор полностью поддерживает все C ++ 11 как в компиляторе, так и в библиотеке?» Должно ли это означать «Этот компилятор поддерживает некоторые разумные подмножества C ++ 11?» Если это означает: «Этот компилятор поддерживает хотя бы одну функцию C ++ 11 в некотором роде, форме или форме?»

Это действительно зависит от каждой реализации, чтобы решить, когда ударить номер версии. Visual Studio отличается от Clang и GCC, поскольку он не имеет отдельного режима компиляции C ++ 03; он предоставляет определенный набор функций, и это то, что он предоставляет.

В общем, один макрос не является полезным инструментом для решения, когда использовать какую-либо функцию. Boost.Config - гораздо более надежный механизм. Комитет по стандартам исследует способы решения этой проблемы в будущих версиях стандарта.

13
задан ryanve 29 November 2011 в 07:11
поделиться