#include //generic template struct allIntegralTypes; template <> struct allIntegralTypes<> { static bool const value = true; }; //= //partial template struct allIntegralTypes { static bool const value = std::is_integral::value and allIntegralTypes::value; }; //= //concept template concept IntegralOnly = allIntegralTypes::value; template void fun(Types ...types) {} //= int main() { fun(12, 13, 'a', true); fun(); // fun(12.5); // WC: 12.5 is not an integral type }