Описание тега user-defined-literals
Определяемые пользователем литералы - это функция языка C++ (новая в C++11), которая позволяет пользователю определять новые виды модификаторов литералов, которые будут создавать объекты на основе строки символов, которые изменяет литерал.
2
ответа
C++11 пользовательские литералы для единиц физических свойств
Я пытаюсь узнать, как использовать пользовательские литералы C++11 для единиц физических свойств. Вопрос в том, как мне избежать смешения этих единиц. Так что (8.0_kg + 8.0_km)-> выдает ошибку. есть идеи, ребята? Я новичок в C++, будь добр. class Ma…
06 мар '17 в 12:42
3
ответа
Как использовать пользовательский литерал в заголовочном файле?
Я определил следующий пользовательский литерал в MyLiteral.h: namespace my_literals { constexpr uint64_t operator"" _nanoseconds(unsigned long long int value) { return value*1000; } } Теперь я мог использовать оператор в другом заголовке SomeCompone…
20 июн '18 в 07:47
5
ответов
Пользовательская литеральная строка: проверка длины во время компиляции
У меня есть пользовательский литеральный оператор, который имеет смысл только для строк определенной длины, например: constexpr uint16_t operator "" _int(const char* s, std::size_t len) { return len == 2 ? s[0] | (s[1] << 8) : throw; } Это раб…
29 ноя '17 в 01:22
4
ответа
Могут ли пользовательские литералы иметь функции в качестве аргументов?
Можно ли использовать функции с пользовательскими литералами? Если да, то что можно сделать? Это законно? void operator "" _bar(int (*func)(int)) { func(1); } int foo(int x) { std::cout << x << std::endl; } int main() { foo(0); // print …
11 ноя '11 в 22:01
2
ответа
Вызвать пользовательский литерал на lvalue
Есть ли способ вызвать пользовательский литерал на lvalues? например, я хотел бы int operator "" _xor1(int a) { return a^1; } // Works fine 17_xor1; auto myint = get_something_only_availabe_at_runtime(); // Any way to use _xor1 on myint? _xor1(myint…
16 авг '18 в 04:35
1
ответ
Целочисленная последовательность символов из пользовательского литерала, принимающая строки в качестве параметров
В настоящее время только двойные числа могут создавать шаблон символов в пользовательском литерале: template <char...> double operator "" _x(); // Later 1.3_x; // OK "1.3"_y; // C++14 does not allow a _y user- // defined operator to parse that…
30 янв '16 в 04:41
1
ответ
Могу ли я вызвать во время выполнения логику для выбора определяемого пользователем литерала для вызова?
В моей программе на C++ у меня есть три пользовательских оператора: constexpr Duration operator""_h(unsigned long long int count) { return {count / 1.f, true}; } constexpr Duration operator""_m(unsigned long long int count) { return {count / 60.f, t…
16 авг '18 в 21:47
3
ответа
Когда и как использовать шаблон буквального оператора?
На cppreference есть упоминание, что можно иметь шаблонные пользовательские операторы с некоторыми ограничениями: Если литеральный оператор является шаблоном, он должен иметь пустой список параметров и может иметь только один параметр шаблона, котор…
30 сен '16 в 16:17
0
ответов
Как использовать пользовательские литералы для комплексных чисел?
Что я делаю не так, когда пытаюсь выполнить std::pow(1.0i, 2)? Это мое понимание пользовательского литерала operator""iили это как я использую комплекс pow-overload? Последняя строка показывает ошибку при компиляции с g++-6.2 или g++-5: #include <…
28 ноя '16 в 21:58
3
ответа
C++0x, пользовательские литералы с оператором друга ""()
Будет ли возможно и / или полезно определить operator "" (...) как функция друга? class Puzzle { friend Puzzle operator "" _puzzle(const char*, size_t); ... }; void solve(Puzzle); int main() { solve("oxo,xox"_puzzle); }; Я думаю о "полезном" особенн…
09 сен '11 в 07:06
2
ответа
Разрешены ли пользовательские литералы во время компиляции или во время выполнения?
Интересно, потому что предопределенные литералы, такие как ULL, fи т. д. явно разрешаются во время компиляции. Стандарт (2.14.8 [lex.ext]), похоже, не определяет это, но, похоже, стремится к времени выполнения: [2.14.8 / 2] Пользовательский литерал …
16 апр '11 в 03:15
1
ответ
Где я могу найти список префиксов / суффиксов типа C++11?
Может ли кто-нибудь указать мне полный список префиксов / суффиксов языковых типов? Примеры префиксов: auto s1 (u8"I'm a UTF-8 string."); auto s2 (u"This is a UTF-16 string."); auto s3 (U"This is a UTF-32 string."); auto s4 (R"(RAW \ STRING " )"); a…
01 сен '12 в 07:12
1
ответ
Как составить и сформировать двоичные литералы, например, путем преобразования из десятичной в C++11 / C++14?
int main() { int x = 3613; std::cout << "x= " << x << std::endl; std::string xBin = std::bitset<16>(x).to_string(); std::cout << xBin << std::endl; unsigned long xDecimal = std::bitset<16>(xBin).to_ulong(); …
20 окт '17 в 17:16
1
ответ
Шифрование времени компиляции для строк с использованием пользовательских литералов
Мне известно, что новый стандарт C++ допускает использование пользовательских литералов и что их генерация может выполняться во время компиляции. Тем не менее, я совершенно новичок во всей вселенной шаблонного метапрограммирования и пытаюсь привести…
31 июл '15 в 12:37
3
ответа
Список параметров шаблона для литерального оператора
Вот моя реализация преобразования двоичного литерала в десятичный: template<char Head, char... Tail> constexpr int operator"" _b() { if constexpr (sizeof... (Tail) == 0) { return Head - '0'; } else { return (Head - '0') * (1 << sizeof...…
15 дек '18 в 02:26
1
ответ
Хронологические литералы в VS2015
Следующий код дает мне ошибку времени компиляции: #include <chrono> int main() { auto day = 24h; return 0; } Ошибка C3688: неверный литеральный суффикс 'h'; буквальный оператор или шаблон буквального оператора 'operator ""h "не найден. Я пытаю…
07 фев '16 в 15:07
1
ответ
Пользовательские литералы в сочетании с аргументом uint64_t
Я просто наткнулся на следующий пользовательский литерал: #include <cstdint> constexpr auto operator""_G(uint64_t v) { return v * 1'000'000'000ULL; } Однако это не компилируется с GNU 7.3.0 и -std=c++14, Я получаю ошибку "имеет неверный список…
01 мар '19 в 14:50
1
ответ
Что такое шаблон строкового литерала C++20?
Что такое шаблон строкового литерала C++20? Пример Cppreference в этом отношении довольно лаконичен и не очень понятен для меня: struct A { A(const char *); auto operator<=>(const A&) const = default; }; template<A a> A operator ""_a…
20 янв '19 в 15:54
2
ответа
Можно ли строго типизировать пользовательские литералы на основе строк?
Новая пользовательская концепция литералов в C++ предлагает несколько очень интересных способов использования строковых литералов, таких как: "Goodbye %s world"_fmt("cruel"); "Goodbye %s world"_fmt(123); // Error: arg 1 must be convertible to const …
04 июн '12 в 11:29
1
ответ
Пользовательские литералы C++ для любого типа
На данный момент пользовательские литералы принимают ограниченный набор типов в качестве входного параметра (см. Здесь). Планируется ли принимать какой-либо тип в качестве входного параметра, и если нет, то почему? Например, я мог бы захотеть получи…
14 ноя '16 в 15:00