c ++ 0x元组是否使用新的可变参数模板或Boost的宏命令元组实现?

Bre*_*ier 4 c++ templates tuples variadic c++11

我读它是基于 Boost的版本,但我不太确定它在实现时的意义.我知道Boost有他们自己的可变参数模板,但我认为c ++ 0x会使用自己的可变参数模板作为新元组.

Jam*_*lis 6

tuple在的C++ 0x草案标准采用的C++ 0x可变参数模板.它被声明为(§20.4.1):

template <class... Types> class tuple;
Run Code Online (Sandbox Code Playgroud)

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

template <class T1 = unspecified ,
          class T2 = unspecified ,
          ...,
          class TM = unspecified > class tuple;
Run Code Online (Sandbox Code Playgroud)

其中M一些实现定义的值应该至少为十.

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

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