C++03 在获取分配器的上下文中相当于 auto

发布于 2025-01-11 20:34:50 字数 141 浏览 0 评论 0原文

auto source_allocator = source.get_allocator();

如果事先不知道分配器的类型,是否有办法将上面的 auto 替换为 C++03/98 友好的内容?

auto source_allocator = source.get_allocator();

Is there a way of replacing auto in the above with something C++03/98-friendly, in the event where the type of allocator is not known in advance?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

海未深 2025-01-18 20:34:50

根据您在评论中发布的内容,听起来您正在尝试在模板中执行此操作。

假设您希望模板类型是 std::container 或兼容的东西,您可以这样做:
typename T::allocator_type 代替 auto。

https://godbolt.org/z/Pda77vjox

Based on what you posted in the comments, it sounds like you're trying to do this inside a template.

Assuming you are expecting your templated type to be a std::container, or something compatible, you can do this:
typename T::allocator_type in place of auto.

https://godbolt.org/z/Pda77vjox

分開簡單 2025-01-18 20:34:50

至少对于标准容器来说,容器类型需要定义 container_type,因此您通常会得到以下一般顺序的结果:

template <class Container>
void foo(Container const &source) { 
    typename Container::allocator_type source_allocator = source.get_allocator();
    // ...
}

这正是他们要求标准容器来处理的情况。定义这些名称。当然,它也可以与其他具有相同功能的容器一起正常工作。

At least for standard containers, the container type is required to define container_type, so you'd normally end up with something on this general order:

template <class Container>
void foo(Container const &source) { 
    typename Container::allocator_type source_allocator = source.get_allocator();
    // ...
}

This is exactly the sort of situation for which they required standard containers to define those names. Of course, it also works fine with other containers that do the same.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文