Effective STL 第六条 当心C++编译器最烦人的分析机制
来源:互联网 发布:淘宝店铺广告语 编辑:程序博客网 时间:2024/05/21 08:46
三种函数声明
int f(double (d));
int f(double d);
int f(double );
int g(double (*pf)());
int g(double pf()); //pf为隐式指针
int g(double());
注意围绕参数名的括号:
围绕参数名的括号被忽略,而独立的括号表明参数列表的存在;它们说明存在一个函数指针参数
ifstream dataFile("ints.dat");
list<int> data(istream_iterator<int>(dataFile),
istream_iterator<int>());//被分析成函数声明,而不是变量定义
在比如
class Widget{...} //假定Widget 有默认构造函数
Widget w();//不是声明名为w的变量 而是声明了一个名为w的函数,该函数不带任何参数
注意:把形参的声明用括号括起来是非法的,但给函数参数加上括号却是合法的 所以通过增加一对括号,强迫编译器按我们的方式来工作
list<int> data((istream_iterator<int>(dataFile)),
istream_iterator<int>());
并不是所有的编译器都知道这点(作者当时的说法)
更好的方式是 在对data声明书避免使用匿名的istream_iterator对象
ifstream data("ints.dat");
istream_iterator<int> dataBegin(dataFile);
istream_iterator<int> dataEnd;
list<int> data(dataBegin,dataEnd);
以上在vs2013上成立 其他编译器未知
- Effective STL 第六条 当心C++编译器最烦人的分析机制
- C++编译器最烦人的分析机制
- 当心C++编译器的分析机制
- effective stl 第49条:学会分析与STL相关的编译器诊断信息
- 《Effective C++》: 编译器的复仇
- 关于tabBar 隐藏最上边那条烦人的线
- Effective STL:Item2 当心与容器无关(container-independent)的代码这个错觉
- Effective STL 条款6 : 当心C++另人迷惑的解析
- Effective STL 条款6 : 当心C++另人迷惑的解析
- 当心编译器生成的隐含成员函数
- 《Effective STL》读书笔记一:Item 1(小心选择容器) Item 2(当心容器无关代码的假象)
- Effective Java第六条:消除过期的对象引用
- Effective java第六条:消除过期的对象引用
- 烦人的C#!!!
- 第六篇 Java编译器与C/C++编译器的比较
- Effective stl 第6条
- effective stl 第15条
- 还是关于VS2005编译器的烦人问题
- 实时搜索引擎Elasticsearch(3)——查询API的使用
- 永远不要放弃希望---一个研究生屌丝逆袭的故事
- 深入分析 Java I/O 的工作机制
- 01-rhel7的详细安装方法--文本笔记版!
- bootstrap滚动监听示例
- Effective STL 第六条 当心C++编译器最烦人的分析机制
- uvalive5092(找规律)
- 关于JAVA类的初始化顺序
- JAVA中获取一个时间中的年月日
- 数年不关注,Everything for windows已经进化得很厉害了
- 用定时器1控制四位数码管从6432减到6393保持住这个数值,同时用定时器0控制流水灯从上至下以500ms移动同时停止!!!然后流水灯全部闪烁2.4秒后熄灭!继而数码管上显示6666
- 为UIAlertView添加block支持
- 辛星浅析utf8中比较常见的utf8校对集
- Android 控件之九:DatePicker日期选择控件 DatePickerDialog日期选择对话框