c++ - 您应该如何为自定义类实现 STL 功能?

标签 c++ c++11 stl overloading

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

  1. 我应该在 namespace std 中实现 tuple_elementtuple_size 特化吗?如果不是,那么我应该如何实现它们?
  2. 由于我不允许重载 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/

相关文章:

c++ - C++11成员函数第一个参数的类型

c++ - <limits> 和 <climits> 等价

C++ strftime() 不正确的输出

c++ - 带有 move 语义的源函数和汇函数的签名

c++ - 使用 boost::bind 进行部分绑定(bind)

c++ - 如果可能,取消对 C++ 类型指针的引用

c++ - 二维数组 : how to get value for each day instead of week

c++ - 在 C++ 中将映射指针更改为值时丢弃限定符错误

C++ 转义短语子串

c++ - 如何获取 std::set 的第一个元素