Back to TILs

C++ Literais definidas pelo usuário

Date: 2020-08-03Last modified: 2023-03-06

Para que servem

Desempenho

Categorias de literais

Existem 6 categorias:

Literais definicos na biblioteca padrão

<string>

string str = "hello"s + " world"s;

<complex>

complex<double> num = (2.0 + 3.01i) * (5.0 + 4.3i);

<chrono>

bash
auto duration = 15ms + 42h;

Assinaturas dos literais definidos pelo usuário

Você implementa um literal definido pelo usuário definindo um operator "" no escopo de namespace com uma das seguintes assinaturas:

ReturnType operator "" _a(unsigned long long int);   // Literal operator for user-defined INTEGRAL literal
ReturnType operator "" _b(long double);              // Literal operator for user-defined FLOATING literal
ReturnType operator "" _c(char);                     // Literal operator for user-defined CHARACTER literal
ReturnType operator "" _d(wchar_t);                  // Literal operator for user-defined CHARACTER literal
ReturnType operator "" _e(char16_t);                 // Literal operator for user-defined CHARACTER literal
ReturnType operator "" _f(char32_t);                 // Literal operator for user-defined CHARACTER literal
ReturnType operator "" _g(const char*, size_t);      // Literal operator for user-defined STRING literal
ReturnType operator "" _h(const wchar_t*, size_t);   // Literal operator for user-defined STRING literal
ReturnType operator "" _i(const char16_t*, size_t);  // Literal operator for user-defined STRING literal
ReturnType operator "" _g(const char32_t*, size_t);  // Literal operator for user-defined STRING literal
ReturnType operator "" _r(const char*);              // Raw literal operator
template<char...> ReturnType operator "" _t();       // Literal operator template

Referências