草庐IT

auto_created

全部标签

c++ - decltype(auto) 函数返回类型不推导 && 类型

如果一个函数返回decltype(auto),它返回一个int&&类型的局部变量,为什么返回类型是int&?如果我将变量转换为它自己的类型,那么返回类型就是我所期望的(int&&)#includenamespace{autoi=5;autoj=5;decltype(auto)foo1(){int&&ret=std::move(i);returnret;}decltype(auto)foo2(){int&&ret=std::move(j);returnstatic_cast(ret);}}intmain(){static_assert(std::is_same_v);static_ass

c++ - 大 vector 的返回值优化与 auto_ptr

如果我使用auto_ptr作为填充大vector的函数的返回值,这会使该函数成为源函数(它将创建一个内部auto_ptr并在返回非constauto_ptr时移交所有权)。但是,我不能将此函数与STL算法一起使用,因为为了访问数据,我需要取消对auto_ptr的引用。我猜一个很好的例子是大小为N的vector场,每个vector有100个分量。如果N很大,则函数按值或按ref返回每个100个分量vector是不一样的。此外,当我尝试这个非常基本的代码时:classt{public:t(){std::coutautoFun(){returnstd::auto_ptr(newt());}a

C++11: `auto` 对 const 和引用类型的操作的标准引用

假设我有一个类型T:typedef...T;然后我有这些功能:Tf11();T&f12();T&&f13();constTf21();constT&f22();constT&&f23();然后像这样称呼他们:autox11=f11();autox12=f12();autox13=f13();autox21=f21();autox22=f22();autox23=f23();从C++11标准的哪些部分/条款可以推导出x11..x23的等效非自动声明? 最佳答案 它在§7.1.6.4autospecifier中。在您的函数返回类型示例中

c++ - 有没有办法为 C++03 实现 auto 关键字

在C++03或更早版本中,是否有实现auto关键字的方法?不是对象类,而是可以像这样使用它[C++11]autox=5;std::cout我很快“搞定”了一个实现,但它很垃圾,因为你可以将它转换为任何类型-太像一个object类,而且非常基础,我知道,但无论如何,这里是:classauto_t{public:templateauto_t(const_Ty&_Value):__data(_Value){}templateoperator_Ty(){return(_Ty)__data;}private:void*__data;};#defineautoauto_t

c++ - pthread_create 没有参数?

我想创建一个没有函数参数的线程,但我一直收到严重困扰我的错误,因为我无法让一些super简单的东西正常工作这是我的代码:#include#include#include#include#includevoid*showart(NULL);intmain(intargc,char**argv){pthread_tthread1;pthread_create(&thread1,NULL,showart,NULL);getchar();return0;}void*showart(NULL){std::stringtext;std::ifstreamifs("ascii");while(!if

c++ - auto_ptr 陷阱和误区

除了使用auto_ptr的所有已知好处之外,auto_ptr的“最坏做法”是什么?创建auto_ptr的STL约束器。auto_ptr不满足“CopyConstructable”要求。另请参阅ScottMeyer的“有效STL”,第8项。创建数组的auto_ptr销毁时,auto_ptr的析构函数使用“delete”(而不是“delete[]”)来销毁拥有的对象,因此此代码会产生未定义的行为:auto_ptrapi(newint[42]);在使用auto_ptr成员的类中没有处理copy-ctor和op=。人们可能会天真地认为通过使用auto_ptr成员不需要为类实现复制构造函数/赋值

C++14 auto lambda 可以接受 Obj<std::tuple<void>>——但模板函数不能?

下面是一个程序,它完全演示了我所看到的问题。首先,我从一个使用其他类型的分组定义的对象开始,我开始使用std::tuple来管理分组。templateclassobject;templateclassobject>{};我打算这些对象能够具有散布在“包”中的类型void。我已经意识到无法“实例化”这种类型的元组(参见Voidtypeinstd::tuple)我想传递这些对象,也许复制/移动它们......它们的数据成员都不是这些类型的元组。事实上,我可以使用上面的空对象定义重现该问题。我可以让它工作,使用类似的东西:templatestructTGrp{};templateclasso

c++ - 哪个更高效/整洁 : clearing an existing stringstream or creating a new one?

只是出于好奇而提出的简单问题。类上的多个方法需要使用字符串流,或者特别是ostringstream。1)有一个stringstream变量作为类成员,然后在使用它之前清除它,即msg.str("")2)每次需要使用时,在每个方法中本地创建一个新的stringstream变量。就效率和整洁度而言,哪种实现方式最好?我的直觉是选项1,但不确定初始构造与每次调用str()相结合是否会更糟?附言我读过Initializing..whichoneismoreefficient?和Whichisquicker/moreefficient?,我的下一步是研究分析和编写一个小的测试应用程序,但我觉得问

c++ - 单例模式 : different behavior of auto_ptr and unique_ptr

在实现工厂类时,我遇到了一个我无法理解的std::auto_ptr行为。我将问题简化为以下小程序,所以...让我们开始吧。考虑以下单例类:单例.h#ifndefSINGLETON_H_#defineSINGLETON_H_#include#includeclasssingleton{public:staticsingleton*get(){std::coutptr_;//staticstd::unique_ptrptr_;};#endif单例.cpp#includeostd::auto_ptrsingleton::ptr_(0);//std::unique_ptrsingleton::

iPhone 设置 : create dependent settings?

是否可以创建“依赖设置”?例如你有这样的分层设置:-includeanimals--includedogs--includecats在哪里切换动物会自动切换狗和猫(我知道我可以在代码中满足这一点,但是是否可以配置操作系统提供的设置屏幕,以便在包含动物时自动将狗的UISwitch设置为关闭设置为关闭?) 最佳答案 没有。您需要更改您的UI以便不需要此切换,同时显示这两个选项并希望它不会混淆您的用户,或者只在您的应用程序中包含您可以自己编写正确代码的设置。这是一个非常烦人的限制。可能值得向Apple提交错误报告。