草庐IT

auto-suggest

全部标签

c++ - 警告 : function uses 'auto' type specifier without trailing return type

下面的代码给出了下面的警告。有人可以解释原因吗(请注意代码没有用,因为我用int替换了我的类型来制作一个完整的示例)。警告:“MaxEventSize()”函数使用“auto”类型说明符而没有尾随返回类型[默认启用]想法是获取特定结构的最大大小(类型位于int所在的位置)。templateconstexprTcexMax(Ta,Tb){return(a 最佳答案 auto返回类型“没有尾随返回类型”是C++14的一个特性,所以我想你正在编译C++11。您的代码适用于C++14,但对于C++11,如果您想使用auto作为返回类型,您需

【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr

目录1->引用1.1->引用概念1.2->引用特性 1.3->常引用1.4->使用场景1.5->传值、传引用效率比较1.6->值和引用作为返回值类型的性能比较1.7->引用和指针的区别2->内联函数2.1->概念2.2->特性3->auto关键字(C++11)3.1->类型别名思考3.2->auto简介3.3->auto的使用细则3.4->auto不能推导的场景4->基于范围的for循环(C++11)4.1->范围for的语法4.2->范围for的使用条件5->指针空值nullptr(C++11)5.1->C++98中的指针空值1->引用1.1->引用概念引用不是新定义一个变量,而是给已经存在

c++ - 错误 : ‘i’ does not name a type with auto

这个问题在这里已经有了答案:HowdoIenableC++11ingcc?(4个答案)关闭7年前。我是C++新手,这是我的程序#include#include#include#include#includeintmain(){staticconstdoublearr[]={16.0,2.2,77.5,29.0,24.0};std::vectorvec(arr,arr+sizeof(arr)/sizeof(arr[0]));std::transform(vec.begin(),vec.end(),vec.begin(),bind2nd(std::minus(),3.0));for(aut

c++ - 将 auto_ptr 传递给函数可以有效地使其成为接收器。为什么?

我正在阅读一些关于共享指针的笔记。他们说STL对auto_ptr的第一次尝试有以下主要缺点:不能在STL容器中使用复制auto_ptr转移所有权将auto_ptr传递给函数有效地使其成为接收器我理解前两个,但不确定最后一个是什么意思。谁能解释一下。谢谢。 最佳答案 这是因为一旦将auto_ptr复制到一个变量中,您就失去了指向新变量的指针的所有权。当你有:voidfoo(std::auto_ptrx);并且您使用auto_ptr调用foo,您为foo复制了一份auto_ptr采用。这有效地将所有权转移到foo,因此指针在foo完成后

c++ - auto_ptr、immediate get() 和 release()——有用吗?

我正在处理别人的代码,其中包含很多这样的语句std::auto_ptrsmartptr(newObjectA(this));objects_list.push_back(smartptr.get());smartptr.release();这个有用吗?在这里使用智能指针而不是仅仅写有什么实际原因吗?objects_list.push_back(newObjectA(this)); 最佳答案 objects_list.push_back(newObjectA(this));这可能会泄漏内存。让我们看看当我们分解它时会发生什么:newO

c++ - auto* 在编译时有用还是 auto 关键字就足够了?

由于auto关键字在编译时获取类类型,我想知道使用auto*是否有任何效率,或者是否有任何特殊用途该表达式,因为auto在编译时已经获得了指针类型。 最佳答案 这个“新奇的C++11”与高效编译没有任何关系,除了在非常奇怪的极端情况下。所有这些都是为了让人类更容易编写和理解代码。auto*让您清楚地知道您拥有一个指针类型的值,并且编译器仅将其用作额外的类型检查标准,并且如果该类型不是指针类型,则会发出诊断信息——您的代码将出现格式错误,这是一个硬错误。我不记得auto*是否可以作为消歧器参与类型推导,但如果可以,那将是使用它的技术原

c++ - Foreach 范围迭代 vector<int> - auto 或 auto&?

游戏引擎微优化情况:我正在使用C++11范围for循环迭代vector,与auto关键字。什么更快:for(autovalue:ints)...或for(auto&value:ints)...? 最佳答案 在关心哪个更快之前,你应该关心哪个在语义上是正确的。如果你不需要改变被迭代的元素,你应该选择第一个版本。否则,您应该选择第二个版本。当然,您可能会反对,即使您不需要更改vector的内容,仍然可以选择使用对const的引用:for(autoconst&value:ints)然后问题就变成了:哪个更快?通过引用const还是通过值?

c++ - C++11 中的 auto 关键字奇怪行为

只是理论问题-为什么我不能写这样的代码:autoautofoo=0;第一个auto关键字-存储类说明符(是的,我知道它在C++11中没有用且已弃用),第二个auto关键字-auto类型说明符。怎么了?再一次-我真的不想在实际代码中使用它。 最佳答案 auto存储类说明符并非“在C++11中无用且已弃用”,它已被完全删除。auto关键字不再是存储类说明符,不能用作一个说明符。在C++11中,auto是一个简单的类型说明符。 关于c++-C++11中的auto关键字奇怪行为,我们在Stack

C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

文章目录一、引用1.1引用概念1.2引用特性1.3常引用1.4使用场景1.4.1做参数1.4.2做返回值1.5引用和指针的区别1.6小结一下二、内联函数2.1内联的概念2.2内联的特性2.3【面试题】三、auto关键字(C++11)3.1类型别名思考3.2auto简介四、auto的使用细则4.1基于范围的for循环(C++11)4.2范围for的使用条件五、指针空值nullptr(C++11)一、引用1.1引用概念C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用(reference)就是C+

c++ - std::move 与 std::auto_ptr 相比?

我可以用C++11中的“移动”(右值引用)做什么我不能用std::auto_ptr做什么?(据我了解,它们是一个想法的不同实现。)老问题又来了:std::auto_ptr是这么糟糕的组件吗? 最佳答案 C++98/03没有真正“可移动”类的概念。auto_ptr是一个具有transfer-on-copy-semantics的类,即当您制作拷贝时,原始内容会发生变化(注意带有非常量参数的复制构造函数!)。这是不好的。这样的类不能在标准容器中使用。由于新添加的右值引用概念,C++11引入了真正可移动类的概念。新的unique_ptr完全