Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
yumetodo opened this issue Aug 31, 2015 · 5 comments
Open

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

yumetodo opened this issue Aug 31, 2015 · 5 comments

Comments

@yumetodo
Copy link

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

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

@bolero-MURAKAMI
Copy link
Owner

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

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

@yumetodo
Copy link
Author

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

@yumetodo
Copy link
Author

yumetodo commented Mar 7, 2016

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

@bolero-MURAKAMI
Copy link
Owner

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

@yumetodo
Copy link
Author

yumetodo commented Mar 7, 2016

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants