One C++17 problem I come across every now and then is to determine whether a certain class or
function template specialization exists - say, for example, whether std::swap<SomeType>
or
std::hash<SomeType>
can be used. I like to have solutions for these kind of problems in a
template-toolbox, usually just a header file living somewhere in my project. In this article I try
to build solutions that are as general as possible to be part of such a toolbox.