В общем вопрос в заголовке, что за перегружаемый(если уместно применить к этому слово перегружаемый) оператор "" и зачем он используется?
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
в примере
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть вот такая запись которая применяется ко всей странице,что тут означает запятая?
Вроде правильно пишу код, по гайду, а футер выглядит не так как надоИ еще не могу номер телефона по центру сделать (на номер внимания не обращайте,...
Нужно, чтобы элемент rect1 был расположен под rect2, но rect3 (синий) располагался над rect2 (зелёный) и под rect1 (красный)