相关疑难解决方法(0)

如何使用auto获取const_iterator?

第一个问题:是否有可能"强迫" const_iterator使用汽车?例如:

map<int> usa;
//...init usa
auto city_it = usa.find("New York");
Run Code Online (Sandbox Code Playgroud)

我只是想查询的不是改变的任何东西指出,city_it,所以我想有city_itmap<int>::const_iterator.但是通过使用auto,city_it返回类型是相同的map::find(),也就是说map<int>::iterator.有什么建议吗?

c++ auto c++11

52
推荐指数
6
解决办法
2万
查看次数

有没有办法检测const限定对象的构造?

假设有两个声明:

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对象周围创建一个包装器,并STATICconst构造上给出提示,并DYNAMIC在非const构造上提示.当然const_cast存在并且可能搞砸了,但我在这里假设合理的编码:P.

我错过了什么(考虑到C++ 11和C++ 14)?

c++ constructor const c++11 c++14

9
推荐指数
1
解决办法
344
查看次数

标签 统计

c++ ×2

c++11 ×2

auto ×1

c++14 ×1

const ×1

constructor ×1