LINUX.ORG.RU

Посчитать число инстанцирований шаблона с++

 


0

1

Исходная задача сгенерить уникальное число соответствующее типу шаблонного параметра. Что то типа:

size_t getId();

Причем id не должен повторяться в разных единицах трансляции (например попал в разные dll). Возможно ли это?

Ответ на: комментарий от seiken

Кстати, не совсем понимаю беспокойство о производительности RTTI. Насколько я понимаю, оверхед имеет dynamic_cast и typeid от значения неизвестного типа во время компиляции (например, ссылка на класс с vtable или разыменованное значение указателя на класс с vtable). А если тип значения компилятору известен заранее, то typeid превратится в подстановку константы. Разве что в бинарнике будет по строчке на каждое имя типа (не знаю, для всех или только для тех, для которых вызывается typeid, вероятно, зависит от компилятора).

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от seiken

В описании CTTI, которую советуют в ответе на SO, на который ты дал ссылку:

having to use RTTI (Run Time Type Information) which introduces a lot of overhead

Мне интересно какой lof of overhead у RTTI, если не пользоваться dynamic_cast и не делать typeid от полиморфных выражений.

KivApple ★★★★★
()