应该如何为自定义类实现STL功能

How should you implement STL features for custom classes?

本文关键字:实现 STL 功能 自定义      更新时间:2023-10-16

我正在实现一个类似元组的类,称之为MyTuple,我希望它具有一些STL特性,即tuple_elementtuple_sizeget

  1. 我应该在namespace std中实现tuple_elementtuple_size专业化吗?如果没有,我应该如何实施它们
  2. 由于我不允许重载STL get函数,这是否意味着我必须在自己的命名空间中提供一个单独的get函数,从而迫使用户编写using std::get;

回想一下,函数模板的部分专业化是不存在的。所以你不能为你的课专门化std::tuple_element等。

通常,您会在与类本身相同的命名空间中定义独立函数,这些函数在逻辑上是类接口的一部分。然后,您可以依靠依赖于参数的查找来查找它们。std::get也可以通过同样的机制找到——实际上,库的用户不会被迫编写using std::get