Skip to content

Commit

Permalink
Merge pull request #46 from Kojoley/fix-variadic-substitute
Browse files Browse the repository at this point in the history
Fixed variadic substitute
  • Loading branch information
apolukhin committed Feb 20, 2018
2 parents 3f849aa + b91d4aa commit 65477fa
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion include/boost/variant/detail/substitute.hpp
Expand Up @@ -145,7 +145,31 @@ struct substitute<
Ts, Dest, Source
>::type...> type;
};
#endif // !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES)

//
// function specializations
//
template <
typename R
, typename... A
, typename Dest
, typename Source
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(typename Arity)
>
struct substitute<
R (*)(A...)
, Dest
, Source
BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(mpl::int_<-1>)
>
{
private:
typedef typename substitute< R, Dest, Source >::type r;

public:
typedef r (*type)(A...);
};
#else

#define BOOST_VARIANT_AUX_SUBSTITUTE_TYPEDEF_IMPL(N) \
typedef typename substitute< \
Expand All @@ -164,6 +188,7 @@ struct substitute<
#undef BOOST_VARIANT_AUX_SUBSTITUTE_TYPEDEF_IMPL
#undef BOOST_VARIANT_AUX_SUBSTITUTE_TYPEDEF

#endif // !defined(BOOST_VARIANT_DO_NOT_USE_VARIADIC_TEMPLATES)
#endif // !defined(BOOST_VARIANT_DETAIL_NO_SUBSTITUTE)

}} // namespace detail::variant
Expand Down

0 comments on commit 65477fa

Please sign in to comment.