From befe29adf075ed4a29235662335571a26c5e909a Mon Sep 17 00:00:00 2001 From: bolero-MURAKAMI Date: Mon, 6 Apr 2015 00:21:34 +0900 Subject: [PATCH] fix CXX14_CONSTEXPR config --- sprout/config/compiler/gcc.hpp | 9 +++++++-- sprout/random/mersenne_twister.hpp | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/sprout/config/compiler/gcc.hpp b/sprout/config/compiler/gcc.hpp index ab7e01a5..46f9b723 100644 --- a/sprout/config/compiler/gcc.hpp +++ b/sprout/config/compiler/gcc.hpp @@ -60,7 +60,12 @@ # define SPROUT_HAS_CONSTEXPR_BIT_OPERATION #endif -#define SPROUT_NO_CXX14_CONSTEXPR -#define SPROUT_NO_CXX14_VARIABLE_TEMPLATES +#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) +# define SPROUT_NO_CXX14_CONSTEXPR +#endif + +#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) +# define SPROUT_NO_CXX14_VARIABLE_TEMPLATES +#endif #endif // #ifndef SPROUT_CONFIG_COMPILER_GCC_HPP diff --git a/sprout/random/mersenne_twister.hpp b/sprout/random/mersenne_twister.hpp index b0d714aa..321f94d2 100644 --- a/sprout/random/mersenne_twister.hpp +++ b/sprout/random/mersenne_twister.hpp @@ -464,12 +464,20 @@ namespace sprout { z ^= (z >> l); return z; } +#ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR + SPROUT_CXX14_CONSTEXPR sprout::random::random_result const operator()() const { + mersenne_twister_engine eng(*this); + result_type value = eng(); + return sprout::random::random_result(value, eng); + } +#else // #ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR SPROUT_CONSTEXPR sprout::random::random_result const operator()() const { return i_ == n ? twist().generate() : generate() ; } +#endif // #ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR #ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR friend SPROUT_CXX14_CONSTEXPR bool operator==(mersenne_twister_engine const& lhs, mersenne_twister_engine const& rhs) SPROUT_NOEXCEPT { return lhs.i_ < rhs.i_