Customization point objects are semiregular function objects (by definition) that handles constraint ADL dispatch.
A customization point object looks like the following:
namespace detail {
template<class A, class B>
void swap_helper(A& a, B& b) {
using std::swap;
swap(a, b);
}
}
inline constexpr auto swap =
[]<A, B>(A& a, B& b)
requires Swappable<A> && Swappable<B>
{
return detail::swap_helper(a, b);
};
Read More
- A C++ acronym glossary by Arthur O’Dwyer
- Customization Point Design in C++11 and Beyond by Eric Niebler
- Niebloids and Customization Point Objectsby Barry Revzin