![]() |
1
5
你希望我们说什么?不管是谁决定了这个语法(主要是stroustrup本人,afaik),他们都认为自己的语法比你的好。 哪一个更好或更容易记住我不知道-但我发现他们比你的更有意义。当然,你可以不同意。 编辑: 好啊, Alexander has nicely answered question #2 . 关于α1:
区别在于
你
可以
成为特定模板的朋友
实例
而不是整个模板,但为此,编译器必须已经在
所以和一个
模板
是一个例外(通常
|
![]() |
2
5
尽管我不能说
为什么
这个语法是choosen,我可以说我支持语言设计者做出的两个决定——它们对我来说是有意义的。在问题2中,您不仅有一个模板,还有两个嵌套的模板化级别。为什么定义模板类的模板成员的语法应该隐藏这个事实?这样,它只是对现有模板语法的重新组合,而您的模板语法需要特殊的规则将嵌套模板的模板参数合并到一个模板中。
|
![]() |
3
2
假设您的嵌套模板声明稍微复杂一点:
突然间,你的建议似乎不再那么合理或明显了。哪一组参数优先?假设您使用C++0X,并有一个变量参数列表?
至于friend声明,使用您建议的语法(
如果你的意思是声明应该读,总共:
我还认为您建议的语法将使您更难弄清楚模板专门化在做什么,因为您必须查看代码的更多部分并将它们关联起来。
例如,我的版本的模板专门化
正如您所看到的,这与您建议的friend forward声明语法非常接近,可能很难判断您是否打算指定一个专门的版本。它需要将模板参数与模板参数进行匹配,而按照目前的方式,如果没有模板参数,则不会讨论专门化。 |
![]() |
tomm · 谷歌表格-将两列相乘,复制第三列 2 年前 |
![]() |
ziemsterr · 无法在SQL SELECT语句中找出此语法错误 2 年前 |
![]() |
Andrés BolÃvar · AJAX请求未收到我想要的属性 2 年前 |
![]() |
clarkk · 当声明向量时,(1)是什么意思? 2 年前 |
![]() |
Mike C. · Bash错误[:检查文件是否存在时缺少“]” 2 年前 |
![]() |
michael · 错误的脚本和语法问题 3 年前 |