8 #ifndef BOOST_GIL_EXTENSION_DYNAMIC_IMAGE_APPLY_OPERATION_HPP 9 #define BOOST_GIL_EXTENSION_DYNAMIC_IMAGE_APPLY_OPERATION_HPP 11 #include <boost/gil/detail/mp11.hpp> 13 #include <boost/variant2/variant.hpp> 15 namespace boost {
namespace gil {
19 template <
typename ...Types,
typename UnaryOp>
22 #if defined(BOOST_NO_CXX14_DECLTYPE_AUTO) || defined(BOOST_NO_CXX11_DECLTYPE_N3276) 23 ->
typename UnaryOp::result_type
26 return variant2::visit(op, arg);
31 template <
typename ...Types,
typename UnaryOp>
34 #if defined(BOOST_NO_CXX14_DECLTYPE_AUTO) || defined(BOOST_NO_CXX11_DECLTYPE_N3276) 35 ->
typename UnaryOp::result_type
38 return variant2::visit(op, arg);
43 template <
typename ...Types1,
typename ...Types2,
typename BinaryOp>
46 variant2::variant<Types1...>
const& arg1,
47 variant2::variant<Types2...>
const& arg2,
49 #if defined(BOOST_NO_CXX14_DECLTYPE_AUTO) || defined(BOOST_NO_CXX11_DECLTYPE_N3276) 50 ->
typename BinaryOp::result_type
53 return variant2::visit(op, arg1, arg2);
Definition: algorithm.hpp:30
BOOST_FORCEINLINE auto apply_operation(variant2::variant< Types1... > const &arg1, variant2::variant< Types2... > const &arg2, BinaryOp op)
Invokes a generic constant operation (represented as a binary function object) on two variants...
Definition: apply_operation.hpp:45