How to do it...

To create cooked user-defined literals, you should follow these steps:

  1. Define your literals in a separate namespace to avoid name clashes.
  2. Always prefix the user-defined suffix with an underscore (_).
  3. Define a literal operator of the following form for cooked literals:
        T operator "" _suffix(unsigned long long int); 
T operator "" _suffix(long double);
T operator "" _suffix(char);
T operator "" _suffix(wchar_t);
T operator "" _suffix(char16_t);
T operator "" _suffix(char32_t);
T operator "" _suffix(char const *, std::size_t);
T operator "" _suffix(wchar_t const *, std::size_t);
T operator "" _suffix(char16_t const *, std::size_t);
T operator "" _suffix(char32_t const *, std::size_t);

The following example creates a user-defined literal for specifying kilobytes:

    namespace compunits 
{
constexpr size_t operator "" _KB(unsigned long long const size)
{
return static_cast<size_t>(size * 1024);
}
}

auto size{ 4_KB }; // size_t size = 4096;

using byte = unsigned char;
auto buffer = std::array<byte, 1_KB>{};
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset