Mediumлитералы

Что такое user-defined literals и зачем они нужны?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

User-defined literals (UDL) — собственные суффиксы для литералов, вида value_suffix. Реализуются через operator""_suffix. Полезны для типобезопасности единиц.

// Стандартные UDL
using namespace std::chrono_literals;
auto t = 1h + 30min + 15s;     // std::chrono::duration
using namespace std::string_literals;
auto s = "hello"s;             // std::string (не const char*)

// Собственный UDL
constexpr long double operator""_km(long double x) { return x * 1000.0; }
auto d = 5.0_km;               // 5000.0 (метров)

Применяются для метрик, физических величин, идентификаторов — компилятор проверит, что единицы не смешиваются.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.