Quando e como usar um operador literal de modelo?
Emcppreference há uma menção de que se pode termodelo operadores literais do usuário, com algumas restrições:
Se o operador literal for um modelo, ele deve ter uma lista de parâmetros vazia e pode ter apenas um parâmetro de modelo, que deve ser um pacote de parâmetros de modelo não-tipo com o tipo de elementochar
, tal como
template <char...> double operator "" _x();
Então eu escrevi um como no código abaixo:
template <char...>
double operator "" _x()
{
return .42;
}
int main()
{
10_x; // empty template list, how to specify non-empty template parameters?
}
Pergunta, questão:
O código funciona, mas como posso usar o operador com alguns parâmetros de modelo não vazios?10_x<'a'>;
ou10_<'a'>x;
não compila.Você tem algum exemplo de uso no mundo real desses operadores de modelo?