|
@@ -39,7 +39,17 @@ C++之所以变成一门层次丰富、结构多变、语法繁冗的语言,
|
|
|
|
|
|
全文所有为我所撰写的部分,作者均保留所有版权。如果有需要转帖或引用,还请注明出处并告知于我。
|
|
|
|
|
|
-###0.4 意见、建议、喷、补遗、写作计划
|
|
|
+###0.4 推荐编译环境
|
|
|
+
|
|
|
+C++编译器众多,且对模板的支持可能存在细微差别。如果没有特别强调,本书行文过程中,使用了下列编译器来测试文中提供的代码和示例:
|
|
|
+
|
|
|
+* Clang 3.7 (x86)
|
|
|
+* Visual Studio 2015
|
|
|
+* GCC 4.9.2 (x86)
|
|
|
+
|
|
|
+此外,部分复杂实例我们还在文中提供了在线的编译器预览以方便大家阅读和测试。在线编译器参见: http://gcc.godbolt.org/ 。
|
|
|
+
|
|
|
+###0.5 意见、建议、喷、补遗、写作计划
|
|
|
|
|
|
* 需增加:
|
|
|
* 模板的使用动机。
|
|
@@ -1732,7 +1742,9 @@ X<double*, double> v8;
|
|
|
|
|
|
对于某些实例化,偏特化的选择并不是唯一的。比如v4的参数是`<float*, float*>`,能够匹配的就有三条规则,1,6和7。很显然,6还是比7好一些,因为能多匹配一个指针。但是1和6,就很难说清楚谁更好了。一个说明了两者类型相同;另外一个则说明了两者都是指针。所以在这里,编译器也没办法决定使用那个,只好爆出了编译器错误。
|
|
|
|
|
|
-嘿嘿,自己上编译器看看吧(http://goo.gl/9UVzje)。
|
|
|
+其他的示例可以先自己推测一下, 再去编译器上尝试一番 (http://goo.gl/9UVzje)。
|
|
|
+
|
|
|
+再回到第一个例子`DoWork`。
|
|
|
|
|
|
###3.2 后悔药:SFINAE
|
|
|
###3.3 实战单元:获得类型的属性——类型萃取(Type Traits)
|