问题标签 [auto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6861 浏览

c++ - 如何使用自动变量选择迭代器类型?

我有一个 std::unordered_map

我想使用 find 获得一个 const 迭代器。在 c++03 中我会做

在 c++11 中,我想使用 auto 来减少模板

这将是一个 const_iterator 还是迭代器?编译器如何决定使用哪个?有没有办法强制它选择 const?

0 投票
3 回答
741 浏览

c++ - 自动将 c++11 的 auto 关键字重写为派生类型

也许是一个奇怪的问题,但是有没有可用的软件,给定一堆 c++11 代码,派生所有类型的自动类型变量并用这些派生类型重写代码?还有初始化列表?

原因是我们希望提供代码的向后兼容版本(非 C++11),主要是为了与 osx 的可移植性。自动输入和初始化列表是我们最常用的功能,因为它们使代码更具可读性,但手动删除它们是不行的。因为这实际上是编译器对自动类型变量所做的事情,它似乎并不太牵强?

0 投票
2 回答
1025 浏览

c++ - 是否可以在没有预处理器宏的情况下为 getter-setter 定义“虚拟”默认实现

可以使用模板来默认实现 getter-setter。

例如 - http://www.kirit.com/C%2B%2B%20killed%20the%20get%20%26%20set%20accessors/A%20simple%20meta-accessor。最重要的是,如果您决定覆盖此类 setter 或 getter 的默认行为,则无需更改“客户端”代码即可轻松执行此操作,因为 setter-getter 调用语法与调用方法相同,即:

在这两种情况下,an_int 都可以是带有 operator() 的对象或 an_object 的方法。在“客户端”代码中将需要重写后重新编译。

但是是否可以在没有预处理器宏的情况下为 getter-setter 定义“虚拟”默认实现?即这里重要的是,在“客户端”代码的覆盖重新编译期间不需要。当然可以使用预处理器,我想知道有没有更优雅的解决方案?

对于我的 C++03 知识是不可能的,但也许有人有一些想法,或者在 C++11 中是可能的?


“David Rodríguez - dribeas”的答案:像这样:

它可以在派生类中被覆盖,而无需重新编译“客户端”代码。

0 投票
4 回答
2519 浏览

c++ - C++11 自动和 size_type

鉴于以下用法auto

对于 C++ 来说,推断i为是理想的std::vector<int>::size_type,但如果它只查看 的初始化器i,它会看到一个整数。i在这种情况下,推断的类型是什么?这是适当的用法auto吗?

0 投票
2 回答
1295 浏览

c++ - 在这种情况下,放入 decltype(x) 以指定返回类型的语法是什么

我有以下函数可以std::vector在另一个容器中创建一个迭代器:

我想做的是:

我该怎么做x才能让它发挥作用?

尝试但失败的尝试:

(另外,我不是这方面的专家,所以欢迎任何其他建议,评论!谢谢。)

0 投票
3 回答
3909 浏览

c++ - 遍历列表映射?

我有一个map<string, list<int> >我想遍历列表并打印出每个数字。我不断收到关于 const_iterator 和迭代器之间转换的编译错误。我做错了什么?

0 投票
2 回答
20358 浏览

c++ - 'auto const' 和 'const auto' 是一样的吗?

和 之间是否存在语义差异auto constconst auto或者它们的含义相同?

0 投票
1 回答
616 浏览

c++ - c++0x中auto和decltype的区别

我在使用 auto 和 decltype 时遇到问题。

以上代码在GCC4.7中运行良好。我可以使用 'new auto(a[0]*b[0])' 为 a[0]*b[0] 类型分配内存吗?在这种情况下,我无法区分 decltype 和 auto 之间的区别。

0 投票
5 回答
1053 浏览

c++ - 在 C++11 中使用 decltype() 时出错(在 gcc 4.7.0 中创建不透明的错误消息)

使用以下代码(我的原始代码的简化版本)

gcc 4.7.0 出现以下错误:

test.cc: 在函数decltype (std::abs(x.diff(y))) dist(const A<X>&, const A<Y>&)中 [with X = double; Y = double; decltype (std::abs(x.diff(y))) = double]':

test.cc:5:5:错误:double A<double>::a是私有的

突出显示的行:错误:在此上下文中

这个错误信息显然不是很有帮助。我的代码有错误吗?或者这是编译器的问题?

EDIT1:朋友声明没有帮助。

EDIT2:避免使用A<Y>::a也没有帮助。

EDIT3:与EDIT2一起终于解决了这个问题。的decltype()定义中dist()需要decltype()for A<X>::diff(),而后者又使用A<X>::a,它在第一个上下文中是私有的。

EDTI4:Rook 的使用建议typename std::common_type<X,Y>::type也有效!

EDIT5:但请参阅 Jonathan Wakely 对这个问题的回答

0 投票
1 回答
4605 浏览

c++ - c++ auto没有命名类型

我在我的代码中使用关键字 auto

在使用以下命令编译时,我收到这些错误

使用 -std=c++0x 应该可以解决问题。怎么了 ?