Хочу что-то такое:
struct tag1 {};
T t = myMap.get<tag1>();
struct tag2 {};
myMap.put<tag2>(someValue);
Есть реализации?
Здравствуйте, Аноним, Вы писали:
А> Есть реализации?
Всего-то делов:
template<typename T, typename TagT>
T& TagValue()
{
static T value;
return value;
}
................
// используем:
struct tag1 {};
struct tag2 {};
int x = TagValue<int, tag1>();
TagValue<int, tag2> = 42;
Можно ещё обернуть это дело по вкусу, для приведения интерфейса к желаемому виду.
Минус -- T должен быть default constructible, но при необходимости можно и это обойти.
Здравствуйте, quodum, Вы писали:
Q>Здравствуйте, Аноним, Вы писали:
А>> Есть реализации?
Q>Всего-то делов:
Q>Q>template<typename T, typename TagT>
Q>T& TagValue()
Q>{
Q> static T value;
Q> return value;
Q>}
Q>................
Q>// используем:
Q>struct tag1 {};
Q>struct tag2 {};
Q>int x = TagValue<int, tag1>();
Q>TagValue<int, tag2> = 42;
Q>
Q>Можно ещё обернуть это дело по вкусу, для приведения интерфейса к желаемому виду.
Q>Минус -- T должен быть default constructible, но при необходимости можно и это обойти.
Не подходит. Контейнер динамический. Расширяется новыми тэгами по всей программе.
Здравствуйте, Аноним, Вы писали:
А>Не подходит. Контейнер динамический. Расширяется новыми тэгами по всей программе.
Насколько я тебя понял, тэги -- это типы. И как же они могут возникать в программе динамически?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Аноним, Вы писали:
А>>Не подходит. Контейнер динамический. Расширяется новыми тэгами по всей программе.
E>Насколько я тебя понял, тэги -- это типы. И как же они могут возникать в программе динамически?
Они не возникают динамически.
Короче говоря, мне нужен некий map<?, boost::any> чтобы в качестве ключа я указывал простейшую конструкцию и она гарантированно не совпадала с другими ключами. Желательно, с константным временем доступа.