Типа
using Param = Type<std::string, class ParamTag>;
using Var = Type<std::string, class VarTag>;
Param и Var ведут себя как стринг, но имеют разные типы. Как это реализовать?
что значит ведут себя как string?
То что в месте где может использоваться std::string можно std::string заменить на этот тип
class param: public std::string{}: ?)
Конструктора от std::string нет
если честно всё ещё не понятно что ты хочешь
https://github.com/foonathan/type_safe
Ну условно есть два типа, которые ничем не отличаются от строк. Например, константа и переменная, но их нужно различать все еще
так и в чем проблема различать?
Спс ts::strong_typedef
Проблема не в том чтобы различать, а в том чтобы этот тип вел себя как строка. Конструировался от строки, кастился к строке неявно и т.д.
Я не понимаю это всё...
тогда кажется можно просто шаблонную структуру сделать со строкой внутри, и с тегом, ну либо какую-то либо взять, но имхо оверкил если надо только конструктор и оператор каста
ну заведи enum на тип, и им параметризируй шаблон. Будет тебе серия гарантировано различных типов
Ну можно и так. Просто если есть какой-то исчерпывающий пример как написать себе strong typedef
ну для бедных наверное как-то так) template<typename Tag, typename T> struct SType { SType(T t): t_{std::move(t)} {} operator T() { return t_; } T t_; }; using S1 = SType<struct S1Tag, std::string>; using S2 = SType<struct S2Tag, std::string>;
Обсуждают сегодня