cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

{namespace}::{user_literal} #343

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +2, -1 Автор идеи: Yuri Pechatnov

Пользовательские литералы лаконичны, но для удобного пользования требуют using namespace, что делать не очень хорошо, особенно в хедерах

Кажется, возможность писать std::3_sec могла бы немного улучшить ситуацию

NTime::2018_y, NTime::"2018.09.01"_date, NTime::"18:05:59"_hhmmss, NTime::17_min, NTime::"10:30"_mmss, NData::0xA12BD023_bytes... да что угодно, так как явно указан неймспейс

apolukhin commented 3 years ago

yndx-antoshkka, 21 августа 2018, 15:40 Выглядит страшненько...

Айдар Фаттахов, 24 августа 2018, 19:12 В этом случае можно даже разрешить пустые литералы NTime::"FOOBAR". Аргумент против: в этом случае лучше вызывать конструктор или фабрику

smertigdon, 26 августа 2018, 10:34 Логичнее ввести unusing namespace, но с введением модулей проблема должна в принципе пропасть, так что нет смысла ее чинить

Андрей Руссков, 28 сентября 2018, 0:22 необязательно писать using namespace в шапке файла, можно указывать в начале функции, использующей литерал:

auto foo() {
   using namespace bar;
   return "abc"_def;
}

Ну или using bar::operator ""_def;