General Utility Library for C++14  2.9
Metaprogramming Utilities and Type Traits

The library provides some utilities for template metaprogramming:

IsContainerLike: A type trait to determine if a type behaves like a standard container.

OverloadSet and make_overload_set(): A function object type that works like an overload set of functions, and a helper function to create such an object from a bunch of lambdas.

remove_cvref: A metafunction to remove const, volatile, and reference qualifiers from a type. This is a backport of std::remove_cvref from C++20.

void_t: A template typedef that maps an arbitrary list of types to void. This is primarily useful to detect ill-formed types for SFINAE. This is a backport of std::void_t from C++17.