我似乎记得,在过去的时候,在处理嵌套模板参数时,被警告不要将两个 >
字符彼此相邻(没有空格)。我什至依稀记得声明了任何 vector 的 vector 并遇到了这个编译错误。
但现在我发现编译可怕的>>
绝对没有错...
因此我的问题是:
这种约定在什么时候成为一种可接受的做法?
它是标准 C++ 的一部分吗?
它是否一直是标准的一部分,而我在大学使用的编译器(以及我拥有的教授)还不支持它?
也许这些问题有点历史意义,但对我来说,适当的历史背景似乎使实际内存变得微不足道。
最佳答案
用嵌套 >>
关闭的模板是 officially supported由即将到来的标准 C++0x(现在的 C++11)。以前,您需要空间,或为您付出更多努力的编译器(并且做了标准未指明的事情)。
问题源于 C 中的 >>
是右移运算符,它是单个词法标记,与两个单独的 >
标记冲突这在经典构造的 C++ 编译器的解析阶段是需要的(并且仅在模板的情况下,而不是在它实际上是右移时)。换句话说,如果允许关闭嵌套模板,>>
在词法上是模棱两可的,但这可以(并且正在)通过解析过程中的额外复杂性来解决(这在现代 C++ 中确实不是什么新鲜事) )。
关于c++ - 对于嵌套模板,什么时候 `>>` 成为标准 C++(而不是 `>>` )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7087033/