Здравствуйте, Анатолий Широков, Вы писали:
АШ>Но с практической точки зрения тег можно нагрузить еще и полезной метаинформацией, тогда запись типа станет лаконичной, а код более читаемый:
АШ>
Так, выглядит значительно лучше.
Но желательно описать переменную одной строкой, и там же ее инициализировать.
На каждый новый тип нужен новый тег, а это несколько лишних строк.
Ну да. Я упустил это из вида.
Тег можно не просто как имя использовать,
но и нагрузить дополнительной полезной информицией.
Например базовый тип.
Можно туда же поместить и предикат для рантайм проверки.
В случае с std::string например, регулярное выражение.
Это где-нибудь уже реализовано?
Здравствуйте, vadimcher, Вы писали: V>Ты не понял в чем вопрос. Если ты хочешь завести две совместимые переменные ОДНОГО типа UniqueType<std::string>, например, oldpassword и newpassword, то как ты это сделаешь в твоем примере?
Как то так:
typedef UniqueType< std::string > Password;
Password oldpassword;
Password newpassword;
Можно поместить информацио о типе в сам шаблон:
UniqueType< std::string > oldpassword;
oldpassword::Type newpassword;
Здравствуйте, rs4i, Вы писали:
R>UniqueType< std::string > oldpassword; R>oldpassword::Type newpassword;
Это как?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, rs4i, Вы писали:
... R>Можно туда же поместить и предикат для рантайм проверки. R>В случае с std::string например, регулярное выражение. R>Это где-нибудь уже реализовано?
Здравствуйте, frogkiller, Вы писали:
F>Здравствуйте, rs4i, Вы писали:
R>>Вопрос: как обеспечить уникальность типа?
F>Не так давно тут была забавная тема про compile-time счётчик
Я в общем-то в этом направлении и копал, пока не убедился что это сделать нельзя.
(смотрел ликбез по лиспу)
Счетчик интересный получился, только не везде рабочий.
На VC9 считает до 498, на GCC не работает