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 подскажет развёрнутый ответ в реальном времени.