草庐IT

member-initialization

全部标签

c++ - Lambda 捕获列表 : capturing object's member field by value not possible without capturing the whole object?

下面的代码voidCMainWindow::someMethod(constCLocationsCollection&parentItem){autof=[this,parentItem.displayName](){};}给我一​​个错误:errorC2143:syntaxerror:missing']'before'.'如果我想通过ref捕获parentItem.displayName,我会为它创建一个非依赖别名标识符:constQString&name=parentItem.displayName;autof=[this,&name](){};//Orshoulditbe[thi

C++11 : error: ‘begin’ is not a member of ‘std’

我正在尝试执行以下操作:source=newint[10];dest=newint[10];std::copy(std::begin(source),std::end(source),std::begin(dest));但是,编译器报如下错误。copy.cpp:5434:14:error:‘begin’isnotamemberof‘std’copy.cpp:5434:44:error:‘end’isnotamemberof‘std’copy.cpp:5434:72:error:‘begin’isnotamemberof‘std’我已经包含了所需的代码中的header。有人可以帮我解决这

c++ - '&' : illegal operation on bound member function expression

这个问题在这里已经有了答案:Printaddressofvirtualmemberfunction(5个答案)关闭7年前。当我尝试从具有主要功能的单个cpp文件时,这有效,sprintf(smem_options,"#transcode{vcodec=RV24}:smem{""video-prerender-callback=%lld,""no-time-sync},",(longlongint)(intptr_t)(void*)&cbVideoPrerender);如何在类中将函数参数传递给sprintf?sprintf(smem_options,"#transcode{vcodec

c++ - std::is_member_function_pointer 不适用于 noexcept 成员函数

我在使用std::is_member_function_pointer时遇到问题。据我所知,在给定noexcept成员函数时它不起作用。我在标准中找不到任何声明它不适用于noexcept合格成员函数的内容。问题示例:#includeclassA{public:voidmember()noexcept{}};intmain(){//failsatcompiletimeifA::memberisadatamemberandnotafunctionstatic_assert(std::is_member_function_pointer::value,"A::memberisnotamemb

C++ std::vector initializer_list 重载歧义 (g++/clang++)

考虑以下代码:#include#defineBROKENclassVar{public:#ifdefBROKENtemplateVar(Tx):value(x){}#elseVar(intx):value(x){}#endifintvalue;};classClass{public:Class(std::vectorarg):v{arg}{}std::vectorv;};无论BROKEN是否被定义,Clang++(7.0.1)编译它没有错误,但是如果BROKEN被定义,g++(8.2.1)会引发错误:main.cpp:9:20:error:cannotconvert‘std::vect

c++ - decltype( (A{}.int_member) ) 的正确结果是什么?

给定类型A的定义:structA{inti;};根据规范[expr.ref](我使用了n4618):(ifE2isnon-reference,)...IfE1isanlvalue,thenE1.E2isanlvalue;otherwiseE1.E2isanxvalue...显然A{}.i是xvalue;还考虑到[dcl.type.simple]:(fordecltype(e),)—...ifeisanunparenthesizedid-expressionoranunparenthesizedclassmemberaccess...—otherwise,ifeisanxvalue,de

c++ - 可选地支持模板的 initializer_list 构造可能包装容器

如果我有一个包装标准容器的模板,似乎我可以相当轻松地委托(delegate)initializer_list构造函数:templatestructholder{Tt_;holder():t_(){}holder(std::initializer_listvalues):t_(values){}};例如,这与std::vector配合得很好。intmain(intargc,char*argv[]){holder>y{1,2,3};returnEXIT_SUCCESS;}但它很明显不适用于作为“int”的T或任何其他没有嵌套value_typetypedef的类型。因此,我想使用某种ena

c++ - 可以为 initializer_list 文字重载运算符吗?

这个问题在这里已经有了答案:InitializerlistsandRHSofoperators(1个回答)关闭5年前。我正在尝试为std::initializer_list重载运算符,但以下代码既不在GCC4.7.2也不在Clang3.2中编译:#includevoidoperator+(conststd::initializer_list&,conststd::initializer_list&);intmain(){{1,2}+{3,4};}13.5/6规定运算符函数应至少有一个参数,其类型为类、枚举或对其中之一的引用,标准将initializer_list指定为模板类,所以对我来

c++ - 在 clang 中返回 std::initializer_list

这个问题在这里已经有了答案:lifetimeofastd::initializer_listreturnvalue(2个答案)关闭7年前。考虑这个代码示例:#include#includeintmain(){for(autoe:[]()->std::initializer_list{return{1,2,3};}())std::cout我尝试用g++编译它(gcc版本4.9.2(Debian4.9.2-10))并且输出是正确的。在clang++(Debianclangversion3.5.0-9(tags/RELEASE_350/final)(basedonLLVM3.5.0))中输出

c++ - 使用 initializer_list 的模糊重载解析

我在VisualStudio上测试了以下代码,它编译并打印了“A(double)”。#include#includestructA{A(std::initializer_list){puts("initializer_list");}//(1)A(std::initializer_list){puts("initializer_list");}//(2)A(double){puts("A(double)");}//(3)};intmain(){Avar{1.1};}但是IntelliSense和http://ideone.com/ZS1Mcm不同意,说构造函数“A::A”的多个实例与参