static_assert(((Integer+1)*2+Fraction*2)<=FIXED_POINTS_DETAILS::BitSize<intmax_t>::Value,"Multiplication cannot be performed, the result type would be too large");
static_assert(((Integer+1)*2+Fraction*2)<=FIXED_POINTS_DETAILS::BitSize<intmax_t>::Value,"Multiplication cannot be performed, the intermediary type would be too large");
static_assert((Integer*2+Fraction*2)<=FIXED_POINTS_DETAILS::BitSize<uintmax_t>::Value,"Multiplication cannot be performed, the result type would be too large");
static_assert((Integer*2+Fraction*2)<=FIXED_POINTS_DETAILS::BitSize<uintmax_t>::Value,"Multiplication cannot be performed, the intermediary type would be too large");