https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87108
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-08-31 Ever confirmed|0 |1 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- I think there's an existing bug report about this. The problem is here: template<size_t Factor, size_t Original> struct scale<Factor, amount<Original>> { The template parameter for amount needs to be type 'int' not 'size_t'. amount<Original> should still work though, because Original should be converted to int, and so match amount<1>.