From 2575617250eeced8db1b29a1323402a6646693bb Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 21 Jul 2011 07:49:59 +0000 Subject: [PATCH] Random: Merge constexpr integer_log2_impl. [SVN r73268] --- include/boost/random/detail/integer_log2.hpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/include/boost/random/detail/integer_log2.hpp b/include/boost/random/detail/integer_log2.hpp index f1d7ae0..e794509 100644 --- a/include/boost/random/detail/integer_log2.hpp +++ b/include/boost/random/detail/integer_log2.hpp @@ -22,9 +22,7 @@ namespace boost { namespace random { namespace detail { -// Daniel James: Disabled use of constexpr because integer_log2_impl is not a -// valid constexpr. -#if 0 && !defined(BOOST_NO_CONSTEXPR) +#if !defined(BOOST_NO_CONSTEXPR) #define BOOST_RANDOM_DETAIL_CONSTEXPR constexpr #elif defined(BOOST_MSVC) #define BOOST_RANDOM_DETAIL_CONSTEXPR __forceinline @@ -38,10 +36,11 @@ template struct integer_log2_impl { template - BOOST_RANDOM_DETAIL_CONSTEXPR static int apply(T t, int accum) + BOOST_RANDOM_DETAIL_CONSTEXPR static int apply(T t, int accum, + int update = 0) { - int update = ((t >> Shift) != 0) * Shift; - return integer_log2_impl::apply(t >> update, accum + update); + return update = ((t >> Shift) != 0) * Shift, + integer_log2_impl::apply(t >> update, accum + update); } };