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

时间:2010-08-17 13:07:12

标签: c++ templates c++11 tuples variadic

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

1 个答案:

答案 0 :(得分: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是一些实现定义的值,应该至少为十。

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

您可以下载最新的标准草案Final Committee Draft(10.5 MB PDF链接)。