草庐IT

auto-discovery

全部标签

c++ - auto 的编译器问题?错误 : in a declarator-list 'auto' must always deduce to the same type

std::vectorvec;autoi=vec.begin(),j=std::next(i);Error:inadeclarator-list'auto'mustalwaysdeducetothesametype 最佳答案 在Linux上的g++中编译良好,因此它似乎是一个编译器错误。Probablythisone. 关于c++-auto的编译器问题?错误:inadeclarator-list'auto'mustalwaysdeducetothesametype,我们在StackOve

linux使用grep命令查询nginx的进程情况时总是出现 grep --color=auto nginx

问题:每次使用psaux|grep服务名命令查询某个服务的进程时,总会出现一条grep--color=auto服务名例如:psaux|grepnginx#会出现图片中的情况解答:这是因为grep也是一条命令,它在输出时,会把grep服务名也当做一个进程输出,假如使用grep命令查询某个服务的进程号,结果只显示一条grep--color=auto服务名。则说明虚拟机中没有改服务的进程。ChatGPT解答:因为psaux命令会列出当前系统中所有的进程信息,而grepnginx是用于筛选出包含“nginx”关键字的行。由于grep命令本身也被包括在进程列表中,所以它也会被psaux命令找到并显示出来

具有用户类型的 C++20 模板 <auto> 导致 GCC 9 中的 T/const T 类型不匹配

我正在尝试将非类型模板与自定义类型结合使用。structT{};templatestructU{};templatevoidf(U){}intmain(){constexprTt;f(U{});//OKf(U{});//OKf(U{});//Error}模板参数推导失败,gcctrunkwith-std=c++2agetsyop.cpp:10:5:note:templateargumentdeduction/substitutionfailed:yop.cpp:19:21:note:mismatchedtypes‘T’and‘constT’19|f(U{});//Error|^我是不是

c++ - 这两个来源之间是否存在关于 `auto_ptr` 模板类的矛盾?

这site关于“所有权、来源和汇”的陈述:“当您复制auto_ptr时,您会自动将所有权从源auto_ptr转移到目标auto_ptr;如果目标auto_ptr已经拥有一个对象,则该对象首先被释放。复制后,只有目标auto_ptr拥有该指针,并会在适当的时候将其删除,而源将设置回空状态,不能再用于引用拥有的对象。".现在考虑operator=()的定义对于templacteclassauto_ptr,在Stroustrup的TheC++ProgrammingLanguageThirdEdition第14章第368页中:auto_ptr&operator=(auto_ptr&a)thro

c++ - 函数参数列表中的 auto 暗示模板参数

在他的talkatcppcon(约13分钟),AndrewSutton提到您将“很快”能够写作autofunc(autoa,autob){...}这将被理解为templateautofunc(Ta,Ub){...}就像在C++14中为通用lambda引入的那样。此功能的名称是什么?这是ConceptsLite的一部分,还是单独提出的?如果确实有人提出,这显然没有进入C++14;如果有人知道,反对意见是什么? 最佳答案 缩写函数模板是的,它是ConceptsLite的一部分它在概念TS中,它远未为C++14做好准备。在thelates

C++11 auto 和 size_type

鉴于auto的以下用法:std::vectorv;for(autoi=0;i对于C++来说,推导i将是理想的选择作为std::vector::size_type,但如果它只查看i的初始化程序,它会看到一个整数。i的推导类型是什么?在这种情况下?这是auto的适当用法吗?? 最佳答案 使用decltype而不是auto来声明i。for(decltype(v.size())i=0;i更好的是,如@MarkB的回答所示,使用迭代器迭代vector。 关于C++11auto和size_type,

c++ - 'auto' 关键字有什么意义?

所以我理解在C#中使用var是有意义的,因为你有编译器派生的匿名类型。C++似乎没有此功能(除非我错了),那么使用auto关键字有什么意义呢?(这有点酷,与C#不同,auto确实适用于成员/全局变量,我想这很酷,但似乎不足以证明它的存在)。 最佳答案 auto归结为通用编程和节省程序员的输入时有很多用途。例如,考虑这个。你愿意输入:std::unique_ptrg=std::make_unique(1,2,3,4)或:autog=std::make_unique(1,2,3,4)是的,它们都很长,但我们知道返回类型并再次指定它输入起

c++ - 使用 auto 重载模板函数的解析

使用以下3个重载templateautofoo(){return1;}templateintfoo(){return2;}templateTfoo(){return3;}以下是病态的吗?static_cast(&foo)();Clang选择重载#2,而gcc编译失败(Demo)当删除重载#1时,双方都同意选择重载#2(Demo)。删除重载#2时,gcc选择重载#1并且clang编译失败(Demo) 最佳答案 根据[over.over]/2,我们执行模板参数推导。这对于所有三个重载都会成功:在第一个重载中,保留[temp.deduct

c++ - C++14 中 decltype(auto) 的转换函数

classA{public:intnum;A(intparam):num(param){}operatordecltype(auto)(){returnnum;}};classB{public:intnum;AobjA;B(intparam):num(param),objA(param){}//operatorA(){returnobjA;}//Works//#1//operatorint(){returnobjA;}//Works//#2//operatorchar(){returnobjA;}//ActuallyNotNeeded//#3//operatordouble(){ret

c++ - 为什么使用 auto 的直接列表初始化被认为是不好的或不受欢迎的?

我已经养成了使用直接列表初始化编写代码的习惯,因为它更有效,而且对于防止隐式narrowing非常有用。:inti{0};strings{""};charc{'a'};boolb{false};autonum{100};//Butthis??但是当涉及到自动说明符时,我听说这样写被认为是不好的或不受欢迎的,这是为什么呢? 最佳答案 这是使用该语法失败的示例:structFoo{};voideatFoo(constFoo&f){}intmain(){Fooa;autob{a};eatFoo(b);}您可能希望这没问题:b应该是Foo并