http://gcc.gnu.org/projects/cxx0x.html详细记录了gcc对C ++ 11语言功能的支持。但是,TR1指定了编译器必须(应该?)支持的几种数据结构和算法(例如tuple
,bind
...)。
注意:其中一些依赖于特定的语言功能(tuple
依赖于可变参数模板[> = gcc 4.3])因此它们不适用于尚未支持所述功能的gcc版本,但它们不一定支持第一个支持该功能的gcc版本。
对于语言功能的TR1功能的gcc支持是否有类似的列表?
注意:我正在尝试编译C ++ 11功能列表,并希望包含可用于每个功能的第一个gcc版本,因此仅仅知道我当前的版本是不够的诀窍(我可以轻松测试)。
答案 0 :(得分:4)
TR1不是C ++标准的一部分,任何C ++编译器都不需要对TR1的支持。 C ++ 11中包含的TR1版本的功能,例如元组和绑定,不使用新的C ++ 11语言功能,因为TR1为C ++ 03编译器指定了库特性。例如,TR1元组不使用可变参数模板,TR1绑定不使用完美转发。
此外,TR1功能在被采用到标准之前有一些变化,因此使用TR1的代码可能与使用C ++ 11的代码不同。例如,名称更改(例如,uniform_int
- > uniform_int_distribution
)和删除的部分(例如,删除了将随机引擎绑定到分发的工具,以支持更一般的绑定工具)
不幸的是,在stdllibc ++中似乎没有任何关于TR1支持的综合文档。如果您正在编译C ++ 11功能列表,则可能根本不想包含TR1。如果你想要包含TR1,请记住TR1支持可以在支持该功能的C ++ 11版本所需的语言功能之前。