#include #include using namespace boost::safe_numerics; int f(int i){ return i; } template using safe_literal = safe_signed_literal; int main(){ const long x = 97; f(x); // OK - implicit conversion to int const safe_literal<97> y; f(y); // OK - y is a type with min/max = 97; return 0; }