std::tuple
除其他外,包含以下构造函数:
explicit tuple( const Types&... args );
template< class... UTypes >
explicit tuple( UTypes&&... args );
两者都有等效的描述,因为它们用对应的值初始化每个元素args
。唯一的区别是在第二个参数被转发。
根据我对右值引用的理解,我不明白为什么需要第一个版本,因为可以将相同的参数传递给第二个版本。引用将被转发,没有人会更明智,特别是因为没有提到移动语义。
任何人都可以解释是什么使这两个构造函数都是必要的吗?