Если вам нужно делать это часто, то, я думаю, вы могли бы создать
template<typename T>
struct container
{
typedef T& reference;
typedef const T& const_reference;
typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type;
typedef T value_type;
typedef T* pointer;
typedef const T* const_pointer;
};
и наследовать от этого.В стандартной библиотеке std::allocator
определяет все эти определения типов, поэтому наследование от нее технически будет делать то, что вы хотели, и не должно налагать никаких накладных расходов во время выполнения.Я все еще думаю, что лучше просто написать свои собственные определения типов.