From the link you provided, it quotes:
If the literal operator is a template, it must have an empty parameter list and can have only one template parameter, which must be a non-type template parameter pack with element type char
template <char...> double operator "" _x();
Let us see what this means,
Notation char... indicates that this template can be instantiated with 0, 1, 2 or more parameters of type char. This means that each time the compiler encounters a literal like 1234_km it should treat it as the following function call:
operator"" _km<'1', '2', '3', '4'>();
The entire string representing the literal is passed (chopped) as template argument. See this and this for usage.
And regarding the range of characters allowed:(See this Annexure E)
00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF 0100-167F, 1681-180D, 180F-1FFF 200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F 2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF 3004-3007, 3021-302F, 3031-303F 3040-D7FF F900-FD3D, FD40-FDCF, FDF0-FE44, FE47-FFFD 10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD, 60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD, B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFFD
<char...>would represent the set of characters used with the literal, which essentially takes the place of the argument. So2.5_π;would calloperator "" _π()with the template arguments<'2','.','5'>.