我正在实现一个类似元组的类,称它为 MyTuple
,我希望它具有一些 STL 特性,即 tuple_element
、tuple_size
和 get
。
- 我应该在
namespace std
中实现tuple_element
和tuple_size
特化吗?如果不是,那么我应该如何实现它们? - 由于我不允许重载 STL
get
函数,这是否意味着我必须在我自己的命名空间中提供一个单独的get
函数,从而强制用户编写使用 std::get;
?
最佳答案
回想一下,函数模板的偏特化是不存在的。所以你不能为你的类(class)部分特化 std::tuple_element
等。
通常,您会在与类本身相同的 namespace 中定义独立函数,这些函数在逻辑上是类接口(interface)的一部分。然后,您可以依靠依赖于参数的查找来找到它们。 std::get 将通过相同的机制找到 - 您的库的用户实际上不会被迫编写 using std::get
。
关于c++ - 您应该如何为自定义类实现 STL 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778697/