试图更多地了解标准库是如何实际实现的,我正在检查 Visual Studio 中的所有容器。在这里,我看到了一些奇怪的结构:
在 a 的某个基类中std::list<>
找到以下 typedef
typedef typename _Alloc::template rebind<_Ty>::other _Alty;
其中“_Alloc”对应于分配器模板参数(和 _Ty 包含的类型)。我很难找到这个“关键字”的一个很好的解释。到目前为止我发现的最好的事情是它是分配器接口的一部分。尽管即使cppreference也不能很好地解释这一点。
这是template rebind<>
做什么的?为什么在那个位置有必要?