Sprout
Sprout copied to clipboard
Visual Studio 2015およびVIsual Studio 2013 November CTP対応
sprout/config/compiler/visualc.hpp
で現状constexpr
とnoexcept
が無効化されていますが、noexcept
はVIsual Studio 2013 November CTPから、C++11のconstexpr
はVisual Studio 2015から対応しているように思います。ついでにC++11の他の機能への対応をまとめると
- Visual Studio 2015より対応
- C++11constexpr
- User-defined literals
- Unicode string literals
- VIsual Studio 2013 November CTPより対応
- classのdefault指定
- noexcept
- VIsual Studio 2013 より対応
- classのdelete指定
- template aliases
- Delegating constructors
なので
#define SPROUT_NO_CXX11_CONSTEXPR
#define SPROUT_NO_CXX11_DEFAULTED_FUNCTIONS
#define SPROUT_NO_CXX11_DELETED_FUNCTIONS
#if _MSC_FULL_VER < 170051025 || !defined(SPROUT_MSVC_ENABLE_2012_NOV_CTP)
# define SPROUT_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
#endif
#define SPROUT_NO_CXX11_NOEXCEPT
#define SPROUT_NO_CXX11_TEMPLATE_ALIASES
#define SPROUT_NO_CXX11_USER_DEFINED_LITERALS
#define SPROUT_NO_CXX11_DELEGATING_CONSTRUCTORS
#define SPROUT_NO_CXX11_UNICODE_LITERALS
は
#if _MSC_VER < 1900
#define SPROUT_NO_CXX11_CONSTEXPR
#define SPROUT_NO_CXX11_USER_DEFINED_LITERALS
#define SPROUT_NO_CXX11_UNICODE_LITERALS
#endif //_MSC_VER < 1900
#if _MSC_FULL_VER < 180031101
#define SPROUT_NO_CXX11_DEFAULTED_FUNCTIONS
#define SPROUT_NO_CXX11_NOEXCEPT
#endif //_MSC_FULL_VER < 180031101
#if _MSC_VER < 1800
#define SPROUT_NO_CXX11_DELETED_FUNCTIONS
#define SPROUT_NO_CXX11_TEMPLATE_ALIASES
#define SPROUT_NO_CXX11_DELEGATING_CONSTRUCTORS
#endif //_MSC_VER < 1800
#if _MSC_FULL_VER < 170051025 || !defined(SPROUT_MSVC_ENABLE_2012_NOV_CTP)
# define SPROUT_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
#endif
#define SPROUT_NO_CXX11_ATTRIBUTES
のほうが適当だと思うのですが、どうなんでしょうか?
ありがとうございます。Boost1.59 の config とも見比べながら更新しました。 74669a5a8aca869eafef8eb4601f6f0fd28b5e59
C++11 constexpr については、対応が怪しいようなのでまだ無効にしてあります。
更新お疲れ様です。 constexpr delegating constructorと標準ライブラリのconstexpr対応以外にも怪しい所があったとは知らなかったです。
e7a79b31eaca464f37d346ebeb26be9d9bb1437b
でSPROUT_CONSTEXPR_OR_CONST
, SPROUT_STATIC_CONSTEXPR
がSPROUT_NO_STATIC_CONSTEXPR_INITIALIZATION
によって制御されるようになりましたが、なにかバグでもありましたでしょうか?
その更新では、 VC++2015 において関数のconstexpr指定を有効にしましたが、 costexpr指定された変数(定数)を非整数型の定数式で初期化できなかったのでそのような初期化を無効にしました。 http://melpon.org/wandbox/permlink/VyJhAkRrF0iQYnqP
@bolero-MURAKAMI 手元のVS(_MSC_FULL_VER
== 190023506)では普通に通るんですが・・・