C++ 实现我自己的元组类——我应该考虑什么?

C++ 实现我自己的元组类——我应该考虑什么?,c++,c++11,variadic-templates,class-design,stdtuple,C++,C++11,Variadic Templates,Class Design,Stdtuple,我计划编写一个std::tuple的实现。或者更确切地说,我需要编写一个类: 实现一个元组 它有自己的等价物std::get()(也作为独立函数) 其行为非常类似于典型用法中的std::tuple,但是 不一定是std::tuple的完美替代品,也就是说,它可能在某些情况下存在行为差异。具体来说,如果标准委员会对std::tuple有任何令人遗憾的选择,我不一定要重复 可能依赖于标准库的一部分,但最好不依赖于任何运行时函数。所以,或依赖关系是可以的,一些像std::forward(),但我们不

我计划编写一个
std::tuple
的实现。或者更确切地说,我需要编写一个类:

  • 实现一个元组
  • 它有自己的等价物
    std::get()
    (也作为独立函数)
  • 其行为非常类似于典型用法中的
    std::tuple
    ,但是
  • 不一定是std::tuple的完美替代品,也就是说,它可能在某些情况下存在行为差异。具体来说,如果标准委员会对
    std::tuple
    有任何令人遗憾的选择,我不一定要重复
  • 可能依赖于标准库的一部分,但最好不依赖于任何运行时函数。所以,
    依赖关系是可以的,一些
    std::forward()
    ,但我们不要发疯
  • 应该用C++11编写,尽管C++14可能与此相关,如果它使它变得更容易/更好的话
我的问题分为几个部分:

  • 考虑到我的限制,调整libstdc++或libc++实现是否合理?可能是切除或更换一些不必要/不合适的零件
  • 无论是改编还是重新编写,我都需要做出哪些重要的设计决策

注意:显然,这适用于标准库本身不可用的环境。

出于好奇,是否真的有C++14但没有标准库的平台?或者这是为了某种面试/任务等。@jfh:是的,有,但是-我不确定是否要详细说明,因为这样答案可能会集中在该平台上,而不是我的问题。也许你想看看EASTL的实现()。我不知道它是否100%符合标准,它确实使用了一些C++17,但整个项目确实有一些与您相同的目标。可以嵌入。你有很多被动攻击性的BS,比如“Sigger-AddioStudio for ARM提供了一个适合于嵌入式应用程序的有限C++库”,它们甚至没有<代码>。GCC 4.82.实现非常直接,1101行,鉴于gcc坚持使用的通常是深奥的格式,这本书实际上非常容易阅读,因此可能是一本很好的参考书。就我所建议的,把一切都转发!我将实现std::tie,std::pair专门化实际上并不重要,除非您使用它们。您可能希望将一个元组专门化为具有多个成员,而不是只有一个成员(可能受实现和单词边界的影响,通过make_tuple的标记指示,等等),我个人无法忍受在调试器中扩展超过5个成员。