Я хочу реализовать свой собственный класс строкового литерала Literal
и оператор:
constexpr Literal operator""_s(const char* str, size_t size);
class Literal {
friend constexpr Literal operator"" _s(const char*, size_t);
constexpr Literal(const char* str, size_t size);
const char* str = nullptr;
const size_t size = 0u;
};
Затем я хочу разместить пустой литерал внутри моего класса:
class Literal {
…
static constexpr const Literal empty = ""_s;
…
};
КакОжидаемый компилятор отказывается от такой конструкции, потому что на этом этапе класс неполон.Также я полагаю, что это технически должно быть возможно, так как компилятору просто нужно где-то поместить пару char* str = nullptr
и size_t size = 0
для литерала empty
и назначить ее во время компиляции статическому экземпляру моего класса.
Есть ли какой-то «трюк» для достижения такого условия, как: auto new_literal = Literal::empty;
?