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

3

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

  1. 我应该在namespace std中实现tuple_elementtuple_size吗?如果不是,那么我应该如何实现它们?
  2. 由于我不能重载STL的get函数,这是否意味着我必须在自己的命名空间中提供单独的get函数,从而强制用户编写using std::get;

你可以编写自己的 get 函数,但是对于 std::tuple 进行重载,这样人们就可以直接使用你的函数并将其应用于 std::tuple - jogojapan
1个回答

0

请注意,函数模板不存在部分特化。因此,您无法为自己的类部分特化std::tuple_element等。

通常,您会在与类本身相同的命名空间中定义逻辑上属于类接口的独立函数。然后,您可以依赖参数相关查找来找到它们。 std::get将通过相同的机制被找到 - 您的库的用户实际上不需要编写using std :: get


1
  1. std::tuple_element 不是一个函数,它更像是一种类型特征。
  2. 我写了一个简短的测试,结果显示用户实际上必须键入 using std::get
- TianyuZhu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接