fixed issue #7

fixed issue #6
This commit is contained in:
Ye WU 2014-05-17 13:48:34 -07:00
parent 45b3a4ea8b
commit b4099d85e1

View File

@ -9,7 +9,7 @@ C++似乎从他为世人所知的那天开始便成为天然的话题性编程
C++之所以变成一门层次丰富、结构多变、语法繁冗的语言是有着多层次的原因的。Bjarne在《The Design and Evolution of C++》一书中详细的解释了C++为什么会变成如今C++98/03的模样。这本书也是我和陈梓瀚一直对各位已经入门的新手强烈推荐的一本书。通过它你多少可以明白C++的诸多语法要素之所以变成如今的模样,实属迫不得已。
模板作为C++中最有特色的语言特性它堪称玄学的语法和语义理所应当的成为初学者的梦魇。甚至很多工作多年的人也对C++的模板部分保有充分的敬畏。在多数的编码标准中Template俨然和多重继承一样成为了一般程序员非程序库撰写者的禁区。甚至运用模板较多的Boost,也成为了“众矢之的”。
模板作为C++中最有特色的语言特性它堪称玄学的语法和语义理所应当的成为初学者的梦魇。甚至很多工作多年的人也对C++的模板部分保有充分的敬畏。在多数的编码标准中Template俨然和多重继承一样成为了一般程序员非程序库撰写者的禁区。甚至运用模板较多的Boost也成为了“众矢之的”。
但是实际上C++模板远没有想象的那么复杂。我们只需要换一个视角在C++03的时候模板本身就可以独立成为一门“语言”。它有“值”有“函数”有“表达式”和“语句”。除了语法比较蹩脚外它既没有指针也没有数组更没有C++里面复杂的继承和多态。可以说它要比C语言要简单的多。如果我们把模板当做是一门语言来学习那只需要花费学习OO零头的时间即可掌握。按照这样的思路可以说在各种模板书籍中出现的多数技巧都可以被轻松理解。
@ -405,7 +405,7 @@ error C2783: 'DstT _1_2_2::c_style_cast(SrcT)' : could not deduce template argum
然后你仔细的比较了一下,然后发现 … 模板参数有两个,而参数里面能得到的只有 `SrcT` 一个。结合出错信息看来关键在那个 `DstT` 上。这个时候,你死马当活马医,把模板参数写完整了:
``` C++
float i = c_style_cast<float, int>(v);
float i = c_style_cast<int, float>(v);
```
很顺利的通过了。难道C++不能支持让参数推导一部分模板参数吗?