在C++模板中使用尖括号进行实例化,vector<int>
Java和C#语言对其泛型使用相同的语法.
然而,D的创造者对尖括号带来的问题非常直言不讳,并且他们提出了一种新的语法foo!(int)
- 但我从未见过关于尖括号带来的问题的太多细节.
其中一个是用另一个模板实例化模板时vector<vector<int>>
,这会导致一些(较旧的?)编译器将尾随的">>"与位移或流操作符混淆.解决方案是在两个尖括号之间插入一个空格,但现在还没有编译器能够解析这种语法吗?
另一个问题是使用大于运算符时foo<3 > 2>
.解析器会认为运算符实际上关闭了模板实例化; 修复是介绍括号foo<(3 > 2)>
.但我不认为有很多情况你需要这样做,无论如何,我宁愿在需要时输入额外的括号,而不是引入新的语法并且总是要输入感叹号.
使用尖括号还有哪些其他问题使D开发人员创建了新语法?