草庐IT

ENABLE_USER_SITE

全部标签

c++ - 规则 "A user-defined but do-nothing destructor is also a non-trivial destructor"是否过于严格?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。ImprovethisquestionclassBase{public:~Base(){}private:intval;};Basebase;//aglobalvariable你看,析构函数什么都不做,和c++编译器提供的默认析构函数一样。但是根据帖子Whatisanon-trivialdestructorinC++?,析构函数仍然是一个非平凡的析构函数我知道,标准中的每条规则都必须严格。但是,根据我粘贴的上面的代码,用户定义

c++ - 禁用关于 "underscore-prefixed user-defined literals"的 GCC 警告

我的一个客户有很多代码使用了“ui64”、“ui32”等...后缀,我需要移植它。为了避免验证几个正则表达式查找+替换的可能漫长的夜晚,我将所述后缀重现为用户定义的文字。我正在寻找“-Wno-xxx”标志,用于作为结果弹出的“前面没有‘_’”警告。我搜索了警告列表here,但我的大脑目前正遭受相当严重的字母汤综合症,所以我可能错过了。我使用的是cygwin附带的g++4.8.2。 最佳答案 我相信您正在寻找-Wno-literal-suffix。从gcc-7开始(见此处liveongodbold),这个选项也是turnsoffwar

c++ - 为什么 SFINAE 需要 'Enable' 类模板参数?

(本题与C++11/C++14无关:示例使用C++03编译)enable_bool有成员(member)::type仅当T是booltemplatestructenable_bool{};templatestructenable_bool{typedefbooltype;};在下一个片段中,部分特化是正确的(参见gcc.godbolt.org)templatestructFoo{staticintbar(){return0;}};templatestructFoo::type>{staticintbar(){return1;}};intmain(){returnFoo::bar();}

带有 std::enable_if 的 C++ 可变参数模板部分模板特化

ITNOA我的问题是如何在可变参数模板部分模板特化场景中使用std::enable_if?例如,我有一个类使用如下所示的可变参数模板部分特化/***Commoncase.*/templatestructfoo;/***Finalsuperclassforfoo.*/templatestructfoo{voidfunc(){}};/***Regularfooclass.*/templatestructfoo:publicfoo{typedefsuperfoo;voidfunc(){coutsuper::templatefunc();}}它工作正常,但如果H是整数类型,我想要特定的部分特化

c++ - 警告 : auto-importing has been activated without --enable-auto-import specified on the command line

我的环境:QtCreator2.3.1Qt4.7.4(32位)Windows7旗舰版(64位)尝试在QtforWindows中重建项目时,我遇到以下编译器警告:warning:auto-importinghasbeenactivatedwithout--enable-auto-importspecifiedonthecommandline.Thisshouldworkunlessitinvolvesconstantdatastructuresreferencingsymbolsfromauto-importedDLLs.发出此警告的项目包含一个DLL文件。尽管有警告,DLL中的类和函数

C++ - 通过 enable_if_t 推导参数包(可变参数模板)构造函数和复制构造函数

更新:谢谢你,大露营。这是最后的structA.structA{template>A(Args&&...args){cout,A>::value>>A(Arg&&arg){cout来源:关于这段代码,#include#include#includeusingnamespacestd;structA{template>,A>::value>>A(Args&&...args){cout输出是vvvvm在VC++14.0中。但是为什么输出不是vvccm?(我希望candd使用复制构造函数。而且我知道EffectiveModernC++Item27只使用一个转发引用。)

c++ - 使用 std::enable_if 作为函数参数与模板参数有什么区别?

我想知道使用std::enable_if有什么区别?作为函数参数还是模板参数?我有以下两个函数模板:#includetemplatevoidf_function(T,typenamestd::enable_if_t::value,int>=0){}template::value>>voidf_template(T){}intmain(){intx=1;f_function(x);f_template(x);}产生以下程序集(从https://godbolt.org/g/ON4Rya开始):main:pushq%rbpmovq%rsp,%rbpsubq$16,%rspmovl$1,-4(

c++ - 为继承 enable_shared_from_this 的类获取 unique_ptr

通常我更喜欢从工厂返回unique_ptr。最近我遇到了为继承enable_shared_from_this的类返回unique_ptr的问题。此类的用户可能会意外调用shared_from_this(),尽管它不属于任何shared_ptr,这会导致std::bad_weak_ptr异常(或C++17之前的未定义行为,通常作为异常实现)。代码的简单版本:classFoo:publicenable_shared_from_this{stringname;Foo(conststring&_name):name(_name){}public:staticunique_ptrcreate(c

c++ - 转发声明使用 enable_if : ambiguous call 的函数

我在声明一个使用boost::enable_if的函数时遇到了一些麻烦:下面的一段代码给我一个编译器错误://Declarationtemplatevoidfoo(Tt);//Definitiontemplatetypenameboost::enable_if>::typefoo(Tt){}intmain(){foo(12);return0;}编译时,出现“对foo的模糊调用”错误。根据enable_if的定义,'type'typedef在条件为真时对应于void,据我所知,的两个签名foo匹配。为什么编译器认为它们不同,是否有正确的方法来转发声明foo(最好不要重复enable_if

c++ - enable_if 用于没有返回类型的函数

我最近遇到了一个有趣的enable_if用法版本,它用于有条件地启用具有更好可读性的函数,因为该函数的返回类型不是enable_if的一部分(请参阅cleaner_usage):#includeusingmaybe_integral=int/*=orfloat--thenwon'tcompile*/;usingreturn_type=int;typenamestd::enable_if::value,return_type>::typetraditional_usage(){return1;}template::value,int>::type=0>return_typecleaner