1 // { dg-do compile { target c++11 } } 2 // PR c++/50958 3 4 typedef decltype(sizeof(0)) size_type; 5 6 constexpr size_type cstrlen_impl(const char * s,size_type i)7cstrlen_impl(const char* s, size_type i) 8 { 9 return s[i] ? cstrlen_impl(s, i + 1) : i; 10 } 11 12 constexpr size_type cstrlen(const char * s)13cstrlen(const char* s) 14 { 15 return s ? cstrlen_impl(s, 0) : throw 0; 16 } 17 18 constexpr size_type 19 operator "" _lenraw(const char* digits) 20 { 21 return cstrlen(digits); 22 } 23 24 static_assert(123_lenraw == 3, "Ouch"); 25 static_assert(1_lenraw == 1, "Ouch"); 26 static_assert(012_lenraw == 3, "Ouch"); 27 static_assert(0_lenraw == 1, "Ouch"); 28