4

我读到它是基于Boost 的版本,但我不太确定它在实施时意味着什么。我知道 Boost 有自己的可变参数模板,但我认为 c++0x 会为新元组使用自己的可变参数模板。

4

1 回答 1

6

C++0x 草案标准中tuple使用 C++0x 可变参数模板。它被声明为(§20.4.1):

template <class... Types> class tuple;

但是请注意,TR1 语言扩展还包括tuple,它不使用可变参数模板,因为在编写 TR1 时没有这样的东西。在 TR1 中,tuple声明为(§6.1):

template <class T1 = unspecified ,
          class T2 = unspecified ,
          ...,
          class TM = unspecified > class tuple;

哪里M是一些实现定义的值,应该至少为 10。

TR1 不是正式的 C++ 语言的一部分,但许多最近的实现都支持它。如果您的实现还不支持可变参数模板,它可能支持 TR1 tuple

您可以下载最新的标准草案,最终委员会草案(10.5 MB PDF 链接)。

于 2010-08-17T13:08:50.507 回答