草庐IT

Auto-Linking

全部标签

c++ - 有没有办法在 C++ 中将 auto 作为参数传递?

有没有办法将auto作为参数传递给另一个函数?intfunction(autodata){//DOESsomething} 最佳答案 如果您希望这意味着您可以将任何类型传递给函数,请将其设为模板:templateintfunction(Tdata);有一个C++17提议允许您使用的语法(正如C++14已经对通用lambda所做的那样),但它还不是标准的。编辑:C++2020现在支持自动函数参数。请参阅下面的Amir的回答 关于c++-有没有办法在C++中将auto作为参数传递?,我们在S

C++ : Difference between linking library and adding include directories

很多标题都概括了。如果我想使用库,我不确定两者之间的区别。谢谢! 最佳答案 一般来说,两者都需要。包含文件包含类型的声明、函数的原型(prototype)、inline函数、#defines、...,通常是所有信息关于编译器在编译文件时需要注意的库。相反,静态库包含库函数的实际目标代码。如果header包含原型(prototype),则静态库包含(编译的)函数的定义,即链接器将与您的链接器链接的对象模块。如果你只包含头文件而不链接静态库,链接器会提示缺少定义,因为你会在头文件中使用declared函数,而不是defined任何地方(

c++ - c++11 中指针的 'auto' 类型分配是否需要 '*' ?

鉴于我的变量是一个指针,如果我将它分配给“自动”类型的变量,我是否指定“*”?std::vector*getVector();//returnspopulatedvector//...std::vector*myvector=getVector();//assumehasnitemsinitautonewvar1=myvector;//vs:auto*newvar2=myvector;//goalistobehavelikethisassignment:std::vector*newvar3=getVector();我对这个auto如何在c++11中工作感到有些困惑(这是c++11的一

c++ - 从函数返回时 auto 和 decltype(auto) 有什么区别?

我很少看到decltype(auto),但是当我看到它时,我会感到困惑,因为它似乎在从函数返回时与auto做同样的事情。autog(){returnexpr;}decltype(auto)g(){returnexpr;}这两种语法有什么区别? 最佳答案 auto遵循模板参数推导规则,始终为对象类型;decltype(auto)遵循decltype规则,根据值类别推导引用类型。所以如果我们有intx;int&&f();然后expressionautodecltype(auto)-----------------------------

c++ - 在 C++11 中使用 auto

当我使用auto推导指针类型时,我发现了一个奇怪的现象。我的代码是这样的:#includeusingnamespacestd;intmain(){inti=100;autop1=&i;auto*p2=&i;cout编译执行后,我们可以发现*p1和*p2的结果是一样的,都是100。也就是说p1和p2都是指向int对象的指针对象。[user@host~]$./test100100这两个定义p1和p2的语句有什么区别吗? 最佳答案 不同的是,第一种情况下auto被推导为int*,而第二种情况下auto被推导为int,这导致两个p1和p2的

C++11 - 将非静态数据成员声明为 'auto'

如果非静态数据成员在声明中被初始化,C++11是否允许将非静态数据成员声明为“自动”?例如:structS{autox=5;//inplaceof'intx=5;',whichisdefinitelyallowed};GCC4.7拒绝上述代码,而接受intx=5;.假设这不是编译器错误,而是标准确实不允许,为什么不呢?它与声明局部变量auto一样有用。 最佳答案 禁止非静态成员的规则在7.1.6.4第4条:Theautotype-specifiercanalsobeusedindeclaringavariableinthecondi

C++11 基于范围的 for 循环效率 "const auto &i"与 "auto i"

在C++11中,我可以像这样迭代一些容器:for(autoi:vec){std::cout但我知道这是不必要的-不必要,因为我只需要打印vec的值-复制(EDIT:vec的每个元素,所以我可以这样做:for(auto&i:vec){std::cout但我想确保vec的值永远不会被修改并遵守const-correctness,所以我可以这样做:for(constauto&i:vec){std::cout所以我的问题是:如果我只需要查看某个容器的值,那么最后一个循环(constauto&i)是否总是首选由于没有额外的(EDIT:eachelementof)vec?拷贝提高了效率我正在开发一

c++ - 'void()' 中的 'auto f(params) -> decltype(..., void())' 有什么作用?

我找到了代码here看起来像这样:autof(T&t,size_tn)->decltype(t.reserve(n),void()){..}在我阅读的所有文档中,我被告知decltype的签名为:decltype(entity)或decltype(expression)而且任何地方都没有第二个参数。至少这是在cppreference上指出的。.这是decltype的第二个参数吗?如果是这样,它有什么作用? 最佳答案 既然是一个表达式,逗号只是逗号操作符(意味着类型是rhs侧的类型:void),而不是另一个参数。该代码正在使用SFIN

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

autoconst和constauto之间是否存在语义差异,或者它们的意思是一样的? 最佳答案 const限定符适用于紧靠左边的类型,除非左边没有任何东西,然后它适用于紧靠右边的类型。所以是的,它是一样的。 关于c++-'autoconst'和'constauto'是一样的吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/10709897/

c++ - g++ 链接器 : force static linking if static library exists?

我有一个链接到许多库的程序。g++,默认情况下,更喜欢链接到共享库,即使相应的存档存在。如果存在静态存档,我如何更改此首选项以首选静态存档而不是动态库?​​注意,我使用了-static选项,但它会尝试为所有库查找静态存档,这不是我想要的。 最佳答案 g++-Wl,-Bstatic-lz-lfoo-Wl,-Bdynamic-lbar-Wl,--as-needed将zlib和libfoo链接为static,并将libbar链接为dynamic。--as-needed将丢弃任何未使用的动态库。