Программы на C++. Форум разработчиков
Anonymous
Почему я не могу специализироваться в форматере Std :: Formatter внутри моего пространства имен?
Сообщение
Anonymous » 11 апр 2025, 22:56
Я хочу специализировать std :: formatter внутри моего пространства имен. Однако это не работает так, как я хочу (вариант 1). Он работает вне пространства имен (вариант 3), а также с обходным пути внутри пространства имен (вариант 2). < /P>
Код: Выделить всё
#include
#include
#include
#include
class Class {};
#define VARIANT 1
namespace Namespace {
#if VARIANT == 1
template
struct std::formatter : std::formatter {
auto format(const Class& Class, auto& context) const {
return std::formatter::format("CLASS", context);
}
};
#endif
#if VARIANT == 2
template
requires std::same_as
struct std::formatter : std::formatter {
auto format(const Class& Class, auto& context) const {
return std::formatter::format("CLASS", context);
}
};
#endif
} // namespace Namespace
#if VARIANT == 3
template
struct std::formatter : std::formatter {
auto format(const Class& Class, auto& context) const {
return std::formatter::format("CLASS", context);
}
};
#endif
int main() { std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79569560/why-cant-i-specialize-stdformatter-inside-of-my-namespace[/url]
1744401376
Anonymous
Я хочу специализировать std :: formatter внутри моего пространства имен. Однако это не работает так, как я хочу (вариант 1). Он работает вне пространства имен (вариант 3), а также с обходным пути внутри пространства имен (вариант 2). < /P> [code]#include #include #include #include class Class {}; #define VARIANT 1 namespace Namespace { #if VARIANT == 1 template struct std::formatter : std::formatter { auto format(const Class& Class, auto& context) const { return std::formatter::format("CLASS", context); } }; #endif #if VARIANT == 2 template requires std::same_as struct std::formatter : std::formatter { auto format(const Class& Class, auto& context) const { return std::formatter::format("CLASS", context); } }; #endif } // namespace Namespace #if VARIANT == 3 template struct std::formatter : std::formatter { auto format(const Class& Class, auto& context) const { return std::formatter::format("CLASS", context); } }; #endif int main() { std::cout Подробнее здесь: [url]https://stackoverflow.com/questions/79569560/why-cant-i-specialize-stdformatter-inside-of-my-namespace[/url]