10#ifndef BOOST_CLBL_TRTS_ADD_TRANSACTION_SAFE_HPP
11#define BOOST_CLBL_TRTS_ADD_TRANSACTION_SAFE_HPP
15namespace boost {
namespace callable_traits {
20#ifndef BOOST_CLBL_TRTS_ENABLE_TRANSACTION_SAFE
23 static_assert(std::is_same<T, detail::dummy>::value,
24 "transaction_safe not supported by this configuration.");
29 static_assert(std::is_same<T, detail::dummy>::value,
30 "transaction_safe not supported by this configuration.");
49 cannot_add_transaction_safe_to_this_type>;
53 template<
typename T,
typename = std::false_type>
54 struct add_transaction_safe_impl {};
57 struct add_transaction_safe_impl <T, typename
std::is_same<
58 add_transaction_safe_t<T>, detail::dummy>::type>
60 using type = add_transaction_safe_t<T>;
66struct add_transaction_safe
67 : detail::add_transaction_safe_impl<T> {};
sfinae_try< T, fail_when_same< U, invalid_type, ErrorType >, fail_when_same< U, reference_error, reference_type_not_supported_by_this_metafunction > > try_but_fail_if_invalid
typename BOOST_CLBL_TRTS_DISJUNCTION(function_object< unwrap_reference< T > >, function< T >, pmf< T >, pmd< T >, default_callable_traits< T >)::traits traits
#define BOOST_CLBL_TRTS_SFINAE_MSG(origin, name)
#define BOOST_CLBL_TRTS_DEFINE_SFINAE_ERROR_ORIGIN(origin)