void_t
is a template discovered by Walter Brown and first introduced by him at CppCon 2014 in the presentation of "Modern Template Metaprogramming: A Compendium, Part II". It is defined as follows:
template <typename ...> using void_t = void;
Its purpose is to map any well formed type into the type void, which provides means to check for well-formedness during template instantiation at compile time. Besides providing means specialize templates based on whether a type, function, variable or a member of some type exists, what other fundamental uses does void_t or checking for well-formedness have, if any? In other words, are there any other uses for void_t
which do not fall into the "concepts lite" categories and were not presented by Walter Brown at CppCon 2014?
PS: Further information and explanations about void_t
can be found under these StackOverflow questions: