在获取分配器的上下文中,C++03 等效于 auto
C++03 equivalent for auto in the context of obtaining an allocator
auto source_allocator = source.get_allocator();
如果事先不知道分配器的类型,有没有办法用 C++03/98 友好的东西替换上面的 auto
?
根据您在评论中发布的内容,听起来您正试图在模板中执行此操作。
假设您希望您的模板化类型是 std::container 或兼容的类型,您可以这样做:
typename T::allocator_type
代替自动。
至少对于标准容器,容器类型需要定义 container_type
,因此您通常会按照以下一般顺序得到一些东西:
template <class Container>
void foo(Container const &source) {
typename Container::allocator_type source_allocator = source.get_allocator();
// ...
}
这正是他们需要标准容器来定义这些名称的情况。当然,它也适用于其他具有相同功能的容器。
auto source_allocator = source.get_allocator();
如果事先不知道分配器的类型,有没有办法用 C++03/98 友好的东西替换上面的 auto
?
根据您在评论中发布的内容,听起来您正试图在模板中执行此操作。
假设您希望您的模板化类型是 std::container 或兼容的类型,您可以这样做:
typename T::allocator_type
代替自动。
至少对于标准容器,容器类型需要定义 container_type
,因此您通常会按照以下一般顺序得到一些东西:
template <class Container>
void foo(Container const &source) {
typename Container::allocator_type source_allocator = source.get_allocator();
// ...
}
这正是他们需要标准容器来定义这些名称的情况。当然,它也适用于其他具有相同功能的容器。