В общем вопрос в заголовке, что за перегружаемый(если уместно применить к этому слово перегружаемый) оператор "" и зачем он используется?
long double operator "" _w(long double);
std::stringoperator "" _w (const char16_t* , std::size_t) ;
unsigned operator "" _w(const char*);
int main {
1.2_w; // вызов operator " " _w (1.2L)
u"one"_w; // вызов operator "" _w (u"one", 3)
12_w; // вызов operator " " _w ("12")
"two"_w; // ошибка: нет применимой литеральной операции
}
Приведу пример, для чего это может быть использовано:
constexpr unsigned long long operator"" _kb ( unsigned long long _bytes)
{
return _bytes * 1024;
}
constexpr unsigned long long operator"" _mb ( unsigned long long _bytes)
{
return _bytes * 1024_kb;
}
Данные операторы позволяют затем в коде использовать конструкции вида:
int64_t buffer = 50_mb;
Что по факту будет преобразовано в
int64_t buffer = 52428800;
Но, на мой взгляд, запись 50_mb сама за себя говорит что это за число.
Так же такой механизм удобно использовать для обозначения времени:
constexpr unsigned long long operator"" _sec ( unsigned long long _sec)
{
return _sec * 1000;
}
constexpr unsigned long long operator"" _min ( unsigned long long _min)
{
return _min * 60_sec;
}
И далее использовать как:
int delay = 15_min;
Подробнее можно почитать по запросу в гугле, или, например, на хабре .
Также стоит почитать здесь .
#include <iostream>
#include <chrono>
int main()
{
using namespace std::chrono_literals;
//3s - пользовательский литерал, определённый в std::chrono_literals
std::chrono::milliseconds interval = 3s;
/// выведет 3000 - 3000 миллисекунд
std::cout << interval.count() << std::endl;
///А ещё есть префиксный строковый литерал, вопринимающий символы как есть
///Выведет \n\n
std::cout << R"(\n\n)" << std::endl;
return 0;
}
Пользовательские литералы, которые Вы сами определяете, необходимо отделять символом подчёркивания, чтобы они не конфликтовали с литералами, входящими в стандартную библиотеку - как 3s из std::chrono_literals в примере
Продвижение своими сайтами как стратегия роста и независимости