https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114018
--- Comment #18 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #15) > void nexttoward(float32_t, long double) = delete; > void nexttoward(float64_t, long double) = delete; > void nexttoward(float128_t, long double) = delete; > > We could also add deleted overloads for bfloat16_t and float16_t although > they don't currently compile anyway, because the float/double/long double > overloads are ambiguous. For consistency in diagnostics, I think defining > them all as deleted would be better. The suitable preprocessor conditions could be by placing those declarations (of course with _Float32, _Float64, _Float128, _Float16 etc., cmath doesn't rely on stdfloat inclusion) right after the nextafter _Float32 etc. overloads. Anyway, if your template works properly even for the integers, even better.