Opened 11 years ago

Closed 11 years ago

Last modified 10 years ago

#6820 closed Bugs (fixed)

make_big_value() in big_constant.hpp uses constexpr incorrectly

Reported by: Eric Niebler Owned by: John Maddock
Milestone: Boost 1.50.0 Component: math
Version: Boost Development Trunk Severity: Problem
Keywords: Cc:

Description

This error is breaking the Boost.Accumulators test when compiled with recent clang builds that support constexpr.

In file included from /Users/niji/Boosty/boost-trunk/boost/math/special_functions/log1p.hpp:19:
/Users/niji/Boosty/boost-trunk/boost/math/tools/big_constant.hpp:34:11: error: cannot initialize return object of type 'char *' with an lvalue of type 'const char *'
   return s;
          ^
/Users/niji/Boosty/boost-trunk/boost/math/tools/big_constant.hpp:32:39: error: no return statement in constexpr function
inline BOOST_CONSTEXPR_OR_CONST char* make_big_value(long double, const char* s, mpl::false_ const&, mpl::true_ const&)
                                      ^
2 errors generated.

Change History (3)

comment:1 by John Maddock, 11 years ago

Resolution: fixed
Status: newclosed

Nod. I spotted that earlier, hopefully it should be fixed now.

comment:2 by Eric Niebler, 11 years ago

Since it's a specifier and not a type modifier, I'm pretty certain that putting it after the return type is invalid. So this:

inline const char* BOOST_CONSTEXPR_OR_CONST make_big_value(...

should be:

inline BOOST_CONSTEXPR const char* make_big_value(...

comment:3 by John Maddock, 10 years ago

(In [78160]) Yet another try at getting constexp usage correct! Refs #6820.

Note: See TracTickets for help on using tickets.