Sprout icon indicating copy to clipboard operation
Sprout copied to clipboard

Visual Studio 2015およびVIsual Studio 2013 November CTP対応

Open yumetodo opened this issue 9 years ago • 5 comments

sprout/config/compiler/visualc.hpp

で現状constexprnoexceptが無効化されていますが、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

のほうが適当だと思うのですが、どうなんでしょうか?

yumetodo avatar Aug 31 '15 17:08 yumetodo

ありがとうございます。Boost1.59 の config とも見比べながら更新しました。 74669a5a8aca869eafef8eb4601f6f0fd28b5e59

C++11 constexpr については、対応が怪しいようなのでまだ無効にしてあります。

bolero-MURAKAMI avatar Oct 13 '15 13:10 bolero-MURAKAMI

更新お疲れ様です。 constexpr delegating constructorと標準ライブラリのconstexpr対応以外にも怪しい所があったとは知らなかったです。

yumetodo avatar Oct 13 '15 14:10 yumetodo

e7a79b31eaca464f37d346ebeb26be9d9bb1437b でSPROUT_CONSTEXPR_OR_CONST, SPROUT_STATIC_CONSTEXPRSPROUT_NO_STATIC_CONSTEXPR_INITIALIZATIONによって制御されるようになりましたが、なにかバグでもありましたでしょうか?

yumetodo avatar Mar 07 '16 17:03 yumetodo

その更新では、 VC++2015 において関数のconstexpr指定を有効にしましたが、 costexpr指定された変数(定数)を非整数型の定数式で初期化できなかったのでそのような初期化を無効にしました。 http://melpon.org/wandbox/permlink/VyJhAkRrF0iQYnqP

bolero-MURAKAMI avatar Mar 07 '16 17:03 bolero-MURAKAMI

@bolero-MURAKAMI 手元のVS(_MSC_FULL_VER == 190023506)では普通に通るんですが・・・

yumetodo avatar Mar 07 '16 17:03 yumetodo