Я хочу использовать материал из другого пространства имен в моем пространстве имен, не делая его частью моего пространства имен. Более конкретный У меня следующая ситуация:Пространство имен C++: использование без использования
namespace my_ns{
enum class c: unsigned long long int{};
namespace literals{
constexpr c operator"" _c(unsigned long long int i)noexcept{
return c(i);
}
}
using namespace literals;
auto xyz = 4_c; // OK: use literals::operator""_c
}
void some_function(){
using namespace my_ns; // shall not implicit include my_ns::literals!
auto abc = xyz; // OK
auto def = 4_c; // shall not know my_ns::literals::operator""_c
}
Я хочу использовать литералы пользователя в my_ns
но для согласованности с std
и std::literals
не some_function
после using namespace
. Считаете ли вы, что аргумент согласованности стоит головной боли?
И если да, есть ли способ сделать это или сделать что-то подобное?
Ответ прост: не сдуть ваши пространства имен с помощью директивы. –
Вопрос просят: зачем создавать пользовательский литерал, если вы не позволите кому-либо его использовать? –