我正在实现一个类似元组的类,称之为MyTuple
,我希望它具有一些STL特性,即tuple_element
、tuple_size
和get
。
- 我应该在
namespace std
中实现tuple_element
和tuple_size
吗?如果不是,那么我应该如何实现它们? - 由于我不能重载STL的
get
函数,这是否意味着我必须在自己的命名空间中提供单独的get
函数,从而强制用户编写using std::get;
?
我正在实现一个类似元组的类,称之为MyTuple
,我希望它具有一些STL特性,即tuple_element
、tuple_size
和get
。
namespace std
中实现tuple_element
和tuple_size
吗?如果不是,那么我应该如何实现它们?get
函数,这是否意味着我必须在自己的命名空间中提供单独的get
函数,从而强制用户编写using std::get;
?请注意,函数模板不存在部分特化。因此,您无法为自己的类部分特化std::tuple_element
等。
通常,您会在与类本身相同的命名空间中定义逻辑上属于类接口的独立函数。然后,您可以依赖参数相关查找来找到它们。 std::get将通过相同的机制被找到 - 您的库的用户实际上不需要编写using std :: get
。
using std::get
。
get
函数,但是对于std::tuple
进行重载,这样人们就可以直接使用你的函数并将其应用于std::tuple
。 - jogojapan