第一个问题:是否有可能"强迫" const_iterator使用汽车?例如:
map<int> usa;
//...init usa
auto city_it = usa.find("New York");
Run Code Online (Sandbox Code Playgroud)
我只是想查询的不是改变的任何东西指出,city_it,所以我想有city_it是map<int>::const_iterator.但是通过使用auto,city_it返回类型是相同的map::find(),也就是说map<int>::iterator.有什么建议吗?
假设有两个声明:
const type x; // case a
type y; // case b
Run Code Online (Sandbox Code Playgroud)
是否可以在type构造函数中检测大小写"a"或"b",以便我可以执行不同的操作?
从标准§12.1/ 3我们得到:
可以为const,volatile或const volatile对象调用构造函数.const和volatile语义(7.1.6.1)不适用于正在构造的对象.它们在最派生对象(1.8)的构造函数结束时生效.
因此,在构造中从不被限定的this行为就像预期的那样const(否则你怎么能在体内编辑成员对象?).所以,似乎不可能使用类型特征this.
一个用例为这将是如下:假设你有一个潜在的C API描述特定对象(在更广泛的意义上)工作,同时暗示对自己的未来的线沿线的使用:
STATIC =不会被修改DYNAMIC =可以修改可以在这些C对象周围创建一个包装器,并STATIC在const构造上给出提示,并DYNAMIC在非const构造上提示.当然const_cast存在并且可能搞砸了,但我在这里假设合理的编码:P.
我错过了什么(考虑到C++ 11和C++ 14)?