草庐IT

defaulted-functions

全部标签

c++ - 比较 std::function<>

是否有可能以某种方式比较两个std::tr1::function对象?如果我有一个function的集合怎么办?对象并想添加和删除事件处理程序?添加是微不足道的,但要找到要删除的那个似乎是不可能的。 最佳答案 简单来说,做不到。std::function(在它的所有迭代中,包括boost::function和std::tr1::function)不支持运算符==。 关于c++-比较std::function,我们在StackOverflow上找到一个类似的问题:

c++ - 如何在模板元编程中使用 'default' 值

我面临以下问题:我有一些通用容器,能够对类型执行一些操作。为简单起见,这些操作在需要时是线程安全的。并且,请求意味着容器中的类型具有typedefstd::true_typeneeds_thread_safety;。structthread_safe_item{typedefstd::true_typeneeds_thread_safety;/**/};structthread_unsafe_item{typedefstd::false_typeneeds_thread_safety;/**/};templatecontainer{/*somealgorithms,thatarestd

c++ - std::function/bind 就像没有标准 C++ 库的类型删除

我正在基于发布/订阅模式使用C++11开发一个简单的事件驱动应用程序。类有一个或多个onWhateverEvent()事件循环调用的方法(控制反转)。由于应用程序实际上是一个固件,其中代码大小很关键,灵active不是高优先级,“订阅”部分是一个包含事件ID和相关处理程序的简单表格。这是一个非常简化的代码:#includeenumEvents{EV_TIMER_TICK,EV_BUTTON_PRESSED};structButton{voidonTick(intevent){/*publishEV_BUTTON_PRESSED*/}};structMenu{voidonButtonPr

c++ - 谷歌模拟 : "no appropriate default constructor available"?

将VisualStudio2010C++与googlemock结合使用。我正在尝试使用我创建的模拟,但在线上遇到编译器错误:EmployeeFakeemployeeStub;错误是:1>c:\someclasstests.cpp(22):errorC2512:'MyNamespace::EmployeeFake':noappropriatedefaultconstructoravailable假员工:classEmployeeFake:publicEmployee{public:MOCK_CONST_METHOD0(GetSalary,double());}员工:classEmploy

c++ - std::function 复制构造函数是否要求模板类型参数类型是完整类型?

给定:#includeclassworld_building_gun;classtile_bounding_box;typedefstd::functionworldgen_function_t;voidfoo(){worldgen_function_tv;worldgen_function_tw(v);}这应该编译吗?我的编译器说:是:GCC/stdlibc++(在GCC和Clang中boost::function也是yes)否:Clang/libc++(http://libcxx.llvm.org/,Clang3.0,截至今日的libc++SVN)(如果“否”是正确答案,我将修复我

c++ - 从整数 vector : function eigen 构造对角矩阵

我有一个整数vector,我想构造一个对角矩阵,其中vectos的元素作为矩阵的对角元素。例如:如果vector为123,则对角矩阵为:100020003最简单的方法就是遍历它并一个一个地设置元素。在eigen中没有其他直接方法可以做到这一点吗?同样在构建对角线之后我想计算逆(这只是反转对角线条目)但似乎没有办法在库本身中也这样做(直接,这也会被优化)。我查阅了diagonalmatrices的文档在eigen库中,但似乎没有办法。如果我在阅读文档时遗漏了一些明显的东西,请指出。感谢任何帮助。 最佳答案 根据thispartofth

c++ - 何时使用 =default 与 =delete

据我了解,这些语义仅用于复制构造函数、移动构造函数、复制赋值、移动赋值和析构函数。使用=delete用于禁止使用其中一项功能,即=default如果您想向编译器明确说明在何处使用这些函数的默认值,则使用它。在制作类(class)时使用这些关键字的最佳做法是什么?或者更确切地说,在开发类(class)时我如何记住这些?例如,如果我不知道我是否会使用这些功能之一,最好用delete禁止它。或允许并使用default? 最佳答案 好问题。同样重要的是:哪里使用=default和=delete.我对此有一些有争议的建议。它与我们所有人(包括

c++ - 如何在函数声明中声明 C++ mem_fn(member_function)?

我理解在其类之外传递成员函数地址的基本问题。我觉得mem_fn()可能是解决方案,但我在具体细节上遇到了麻烦。我在类p中有一个成员函数,当前声明为typedefvoid(*valNamedFlagsCallback)(constint,constbool);boolvalNamedFlags(constOptBlk*operand,constchar*description_of_value_or_NULL,constintsubscripts[],constchar*names[],valNamedFlagsCallbackcallBack);在e类中,我试图用调用valNamedF

c++ - "= default"是否允许离线实现?

通常我会在header中看到=default语法。我的理解是,这与函数在header中明确实现是一样的,请参见下面的Foo。Foo.h#pragmaonceclassFoo{public:Foo()=default;Foo(constFoo&other)=default;};纯粹出于好奇,=default可以在源文件中使用如下吗?栏.h#pragmaonceclassBar{public:Bar();Bar(constBar&other);};酒吧.cpp#include"Bar.h"Bar::Bar()=default;Bar::Bar(constBar&)=default;据我所知

C++ 分析/优化 : How to get better profiling granularity in an optimized function

我正在使用谷歌的perftools(http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html)进行CPU分析——这是一个很棒的工具,帮助我对我的应用程序进行了大量的CPU时间改进。不幸的是,我已经到了这样的地步,代码仍然有点慢,当使用g++的-O3优化级别编译时,我所知道的是特定函数慢,但不知道它的哪些方面慢。如果我删除-O3标志,则程序的未优化部分会超过此函数,并且我无法清楚地了解函数的实际运行缓慢的部分。如果我保留-O3标志,那么函数的慢部分将被内联,我无法确定函数的哪些部分是慢的。有什么建议吗?感谢您