我正在实现一个类似元组的类,称之为MyTuple
,我希望它具有一些STL特性,即tuple_element
、tuple_size
和get
。
- 我应该在
namespace std
中实现tuple_element
和tuple_size
专业化吗?如果没有,我应该如何实施它们 - 由于我不允许重载STL
get
函数,这是否意味着我必须在自己的命名空间中提供一个单独的get
函数,从而迫使用户编写using std::get;
回想一下,函数模板的部分专业化是不存在的。所以你不能为你的课专门化std::tuple_element
等。
通常,您会在与类本身相同的命名空间中定义独立函数,这些函数在逻辑上是类接口的一部分。然后,您可以依靠依赖于参数的查找来查找它们。std::get也可以通过同样的机制找到——实际上,库的用户不会被迫编写using std::get
。