Вы должны дать нам больше контекста. Если вы хотите, чтобы значение было известно во время компиляции, поэтому его легко изменить, используйте container::value_type
.
typedef vector<int> coordinates;
coordinates seq;
fib::value_type elem = seq.back(); // it's easy to change int type
Если вы имеете в виду, что контейнер может содержать различные конкретные (производные) типы, и вы хотите знать их во время выполнения, то вам, вероятно, следует пересмотреть свой подход. В объектно-ориентированном программировании скрытие типа во время выполнения иногда является мощным подходом, потому что это означает, что вы делаете меньше предположений о том, с чем работаете. Конечно, вы можете использовать RTTI, но, возможно, есть лучший способ: нам нужно больше контекста, чтобы рассказать.
Если вы хотите сравнить типы, вы, вероятно, направляете путь времени выполнения. C ++ поддерживает полиморфизм, который, по сути, является тем типом сравнения типов, который вы ищете, но встроен в язык. Вы хотите выполнить другой набор инструкций в зависимости от типа? Полиморфизм позволяет выполнять другую функцию в зависимости от типа объекта. Вам не нужно писать ни одной дополнительной строки кода - только производные от общей базы.