Re[5]: При выводе типа функции теряется ссылка.
От: existential  
Дата: 01.06.12 12:07
Оценка:
Здравствуйте, Went, Вы писали:

W>Есть тип Variant. Может хранить объект любого типа, хоть ссылку, хоть указатель, хоть сам объект. Хотелось бы такого:

W>
W>int x;
W>int& rx = x;
W>Variant v;
W>v.set(x); // v хранит сам объект
W>v.set(rx); // v должен хранить ссылку на объект (внутри реализовано через указатель, но это детали), но он не отличает это от верхней строчки
W>

W>Если я пишу явно
W>
W>v.set<int&>(rx);
W>

W>то все работает как надо.

W>Я не уверен, что мне обязательно нужно без явного указания. Но хочется все-таки такую возможность иметь.


decltype(x) и decltype(rx) будут разными типами, int и int&, соответственно. Можно этим воспользоваться, обернув всё в макрос, чтобы избежать повтора.
Как-то так:
#define VARIANT_SET(v, x) v.set<decltype(x)>(x)

Но вообще я не стал бы так делать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.