More constexpr and noexcept support.

Note 1: Forwarding functions are specified as a C++14 constexpr since
std::forward is not a constexpr within C++11.

Note 2: Though I'm not sure why it doesn't compile, some declarations
are specified as a C++14 constexpr or non-constexpr.

Note 3: Boost.Tuple adaptation and TR1-based tuple implementations are
not constexpr.
This commit is contained in:
Kohei Takahashi
2015-03-03 02:21:02 +09:00
parent d7c918e36f
commit 2114bfca6c
280 changed files with 1107 additions and 935 deletions

View File

@ -21,7 +21,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_helper<false>
{
template <typename U, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U&
call(U& x, T const&, T const&)
{
@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_helper<true>
{
template <typename U, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U
call(U& x, T const& old_value, T const& new_value)
{
@ -44,7 +44,7 @@ namespace boost { namespace fusion { namespace detail
template <typename T>
struct replacer
{
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
replacer(T const& in_old_value, T const& in_new_value)
: old_value(in_old_value), new_value(in_new_value) {}
@ -59,9 +59,9 @@ namespace boost { namespace fusion { namespace detail
mpl::if_<is_convertible<T, value>, value, value const&>::type
type;
};
template <typename U>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename result<replacer(U)>::type
operator()(U const& x) const
{

View File

@ -21,7 +21,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_if_helper<false>
{
template <typename U, typename F, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U&
call(U& x, F&, T const&)
{
@ -33,7 +33,7 @@ namespace boost { namespace fusion { namespace detail
struct replacer_if_helper<true>
{
template <typename U, typename F, typename T>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
static U
call(U& x, F& f, T const& new_value)
{
@ -44,7 +44,7 @@ namespace boost { namespace fusion { namespace detail
template <typename F, typename T>
struct replacer_if
{
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
replacer_if(F in_f, T const& in_new_value)
: f(in_f), new_value(in_new_value) {}
@ -59,9 +59,9 @@ namespace boost { namespace fusion { namespace detail
mpl::if_<is_convertible<T, value>, value, value const&>::type
type;
};
template <typename U>
BOOST_FUSION_GPU_ENABLED
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
typename result<replacer_if(U)>::type
operator()(U const& x) const
{