boost::type_erasure::check_match
// In header: <boost/type_erasure/check_match.hpp> template<typename Concept, typename Op, U> (binding< binding, f, args); template<typename Op, U> ( f, args);
If relaxed is in Concept, checks whether the arguments to f match the types specified by binding. If relaxed is not in Concept, returns true. If binding is not specified, it will be deduced from the arguments.
relaxed
Concept
f
binding