auto相关内容

SFINAE 和 decltype(自动)

如果函数模板返回 decltype(auto)(或使用 auto 的其他类型说明符)但返回语句格式错误,SFINAE 会产生结果吗?return 语句是否被认为是函数签名的直接上下文? N3690 草案中似乎没有任何要求.默认情况下,我猜 SFINAE 不适用. 这看起来很不幸,因为您可以编写一个函数来转发到另一个函数,但是您不能像手写那样以委托为条件使其存在.此外,如果没有 decl ..
发布时间:2021-11-30 18:14:10 C/C++开发

类成员上下文中的 `auto` 返回类型

如何对类成员使用自动类型推导?例如下面的代码 结构体A{自动 foo();//foo 在另一个文件中定义};int main(){一个;a.foo();} 其中 foo 具有返回类型 auto 导致以下错误: 错误:在定义之前不能使用具有推导返回类型的函数“foo"a.foo();^ 这个错误是可以理解的,因为编译器在不知道foo的定义的情况下无法知道它的返回类型是什么. 我的问题是 ..
发布时间:2021-11-30 18:14:03 C/C++开发

带有引用的自动关键字行为

假设我有一个简单的 C++ 类,它包含一个私有成员和一个 getter: class MyClass{私人的:双 m_testValue = 1;民众:双&getTestValue(){return m_testValue;}} 现在假设我想调用 getter 来获取我的引用并编辑此值(并在值之前/之后打印) auto testVal = myClassInstance.getTestVal ..
发布时间:2021-11-30 18:13:36 C/C++开发

在 C++14 中扣除“auto"之前使用“auto func(int)"

我使用 C++14 在 GCC 中编译了以下程序. #include 使用命名空间标准;自动功能(int i);int main(){自动 ret = func(5);返回0;}自动功能(int i){如果(我== 1)返回我;别的返回 func(i-1) + i;} 但是,我收到以下错误. 在函数“int main()"中:8:16:错误:之前使用过“auto func(int)"扣除“汽 ..
发布时间:2021-11-30 18:13:12 C/C++开发

如何在 C++11 中使用 lambda 自动参数

我有一个 C++14 代码.但是,当我在 C++11 中使用它时,它在 const auto 处出现错误.如何在 C++11 中使用它? vector>P;std::vectorF;向量 解决方案 C++11 不支持泛型 lambdas.这就是 lambda 参数列表中的 auto 实际代表的含义:泛型参数,类似于函数模板中的参数.(请注意,const 不是这里的问题.) 注意:C++ ..
发布时间:2021-11-30 18:13:01 C/C++开发

在 C++ 中用 auto 声明变量有什么缺点吗?

auto 似乎是在 C++11 中添加的一个相当重要的特性,它似乎遵循了许多较新的语言.和 Python 这样的语言一样,我没有看到任何显式的变量声明(我不确定是否可以使用 Python 标准). 使用 auto 来声明变量而不是显式声明变量是否有缺点? 解决方案 您只询问了缺点,所以我要强调其中的一些.如果使用得当,auto 也有几个优点.缺点是由于易于滥用以及代码以意外方式运行的 ..
发布时间:2021-11-30 18:12:51 C/C++开发

C++11 将 `auto` Lambda 更改为不同的 Lambda?

假设我有以下包含 lambda 的变量: auto a = [] { return true;}; 我希望 a 稍后返回 false.我可以做一些类似的事情吗? a = [] { return false;}; 此语法给了我以下错误: binary '=' : 没有找到采用右手操作数类型的运算符'主要::' ..
发布时间:2021-11-30 18:12:43 C/C++开发

在 C++11 函数中使用尾随返回类型的优势

在 C++11 中指定尾随返回类型与普通返回类型相比有什么优势?在此处查看 foo1 与 foo2: int foo1() {返回 1;}自动 foo2() ->内部{返回 1;}int main() {foo1();foo2();} 解决方案 在这个例子中,它们的意思完全相同. 但是,一致地使用尾随返回类型形式有一些优点(Phil Nash 称这些形式为 “东端函数",因为返回类型在 ..
发布时间:2021-11-30 18:12:33 C/C++开发

为什么 auto a=1;用C编译?

代码: int main(void){自动 a=1;返回0;} 当文件具有 .c 扩展名时,由 MS Visual Studio 2012 编译器编译而不会出错.我一直认为,当你使用.c扩展名时,编译应该按照C语法,而不是C++.此外,据我所知,自 C++11 以来,C++ 中仅允许没有类型的 auto,这意味着该类型是从初始化程序推导出来的. 这是否意味着我的编译器没有坚持使用 C,或 ..
发布时间:2021-11-30 18:12:16 其他开发

为什么 lambda 函数默认删除推导的返回类型引用?

在 C++14 中,为什么默认情况下具有推导返回类型的 lambda 函数会从返回类型中删除引用?IIUC,因为具有推导返回类型(没有显式尾随返回类型)的 C++14 lambda 函数的返回类型为 auto,这会删除引用(除其他外). 为什么会做出这个决定?在我看来,当您的 return 语句返回时删除引用就像一个陷阱. 这种行为给我带来了以下令人讨厌的错误: class Int ..
发布时间:2021-11-30 18:12:07 C/C++开发

C++ 自动与自动&

如果我有一个函数: Foo&酒吧(){return///在这里创建一个非临时的 Foo 并返回对它的引用} 这是为什么: auto x = Bar();///可能调用复制构造函数 - 没有检查 和这个不一样? auto &x = Bar();///实际上在这里得到一个引用 (实际上,我希望第二个版本能够获得对参考的引用,这没什么意义.) 如果我将 x 的类型明确指定为值或引用,我 ..
发布时间:2021-11-30 18:11:46 C/C++开发

C++11 - 将非静态数据成员声明为“自动"

如果非静态数据成员在声明中初始化,C++11 是否允许将非静态数据成员声明为“自动"?例如: struct S{自动 x = 5;//代替'int x = 5;',这是绝对允许的}; GCC 4.7 拒绝上述代码,但它接受 int x = 5;. 假设这不是编译器错误而是标准确实不允许这样做,为什么不呢?它与声明局部变量 auto 一样有用. 解决方案 禁止非静态成员的规则在7. ..
发布时间:2021-11-30 18:11:35 C/C++开发

c++ 11 中指针的“自动"类型分配是否需要“*"?

鉴于我的变量是一个指针,如果我将它分配给“auto"类型的变量,我是否指定了“*"? std::vector*getVector();//返回填充向量//...std::vector*myvector = getVector();//假设有n个项目自动 newvar1 = myvector;//对比:自动 *newvar2 = myvector;//目标是表现得像这个任务:std::vector ..
发布时间:2021-11-30 18:11:24 C/C++开发

新关键字“自动";什么时候应该用它来声明一个变量类型?

可能的重复: C++0x auto 关键字太多了 我们(作为一个社区)是否有足够的经验来确定汽车何时和/或是否被滥用? 我真正想要的是关于 的最佳实践指南 何时使用自动 什么时候应该避免 可以在 80% 的情况下快速遵循的简单经验法则. 作为上下文,这个问题是由我的回答引发的 这里 解决方案 我认为当在您的项目中工作(或将工作)的协同程序员非常熟悉该类型时, ..
发布时间:2021-11-30 18:11:17 C/C++开发