草庐IT

pybind11

全部标签

c++ - 在 direct3d11 对象上使用 std::shared_ptr 的自定义删除器

当我使用std::shared_ptr并需要一个自定义删除器时,我通常会创建一个对象的成员函数来促进它的销毁,如下所示:classExample{public:Destroy();};然后当我使用共享ptr时,我只是这样:std::shared_ptrptr(newExample,std::mem_fun(&Example::Destroy));问题是,现在我正在使用d3d11,我想将com发布函数用作std::shared_ptr自定义删除器,就像这样std::shared_ptrptr(nullptr,std::mem_fun(&ID3D11Device::Release));但是

c++ - 为什么 C++11 不支持这样的名称查找?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。structA{enumInnerEnum{X};A(InnerEnumx){}};intmain(){Aa(X);}编译器报错:errorC2065:'X':undeclaredidentifier编译器知道构造函数的参数类型是什么,所以当我将X作为参数传递时,编译器应该知道它是一个有效参数。我知道这不是ADL(Argument-dependentNam

C++11 async 只使用一个核心

我正在尝试在C++中并行化一个长时间运行的函数并使用std::async它只使用一个核心。不是函数的运行时间太短,因为我目前使用的测试数据需要大约10分钟才能运行。根据我的逻辑,我创建了NThreads的Futures(每个Futures都占据循环的一部分而不是一个单独的单元格,因此它是一个很好的长时间运行的线程),每个都将分派(dispatch)一个异步任务。然后在它们被创建之后,程序自旋锁等待它们完成。然而它总是使用一个核心?!这也不是我看顶部并说它看起来大致像一个CPU,我的ZSH配置输出最后一个命令的CPU%,它总是正好100%,从不超过autoNThreads=12;auto

c++ - priorC++11 中的 std::vector::begin() 是否等同于 C++11 中的 std::vector::data()?

是std::vector::begin()来自之前-C++11相当于std::vector::data()在C++11中?我问这个的原因是,在C++11之前,我曾经将std::vector::begin()视为指针,但在C++11之后,它不是,而且我不能转换为等效的指针。那么,我可以在C++11之后改用data()吗? 最佳答案 不,begin返回一个迭代器,而data返回一个指针。对于给定的实现,这些可能是同一件事,但您不应该指望这一点。 关于c++-priorC++11中的std::

C++ 11 不可复制类

有没有类似于http://www.boost.org/doc/libs/1_53_0/boost/noncopyable.hpp的类由C++11引入?我无法使用=delete功能,因为我的编译器不支持它。如果可能,我更愿意使用标准库功能,而不是提升或实现我自己的功能。 最佳答案 没有,没有类似的标准类。C++11为此目的引入了=delete,因此额外引入一个类将是不必要的冗余和无用的。 关于C++11不可复制类,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么 C++11 没有包含 Boost 的所有类型特征?

如您所知,Boost有很多类型特征。C++11将其中一些纳入标准,例如is_pointer和is_base_of。C++11没有包含其他的,例如has_greater和has_greater_equal。为什么不?是否有任何计划将它们包含在下一个标准中?标准委员会或BjarneStroustrup是否有关于此的一些文件? 最佳答案 C++11于2011年8月获得批准。运算符检测已添加到2011年11月发布的1.48.0的BoostTypeTraits。我不相信有人为C++14提出了它们,现在已经卡住了。恕我直言,如果有人为C++17

c++ - c++11 有类似 quint8 的东西吗?

这个问题在这里已经有了答案:fixedlengthdatatypesinC/C++(11个答案)关闭8年前。Qt中有一些类型,例如quint8,它保证在Qt支持的所有平台上都是8位的。我想知道C++11是否有这种类型?如果不是,有什么替代方案?谢谢。

c++ - 在 C++11 的模板化函数中处理 void 变量

我有一个模板类,它必须在调用一个参数和返回类型都是通用的函数之前执行一些操作。这是方法:templateReturnTypefunction(Args...args){//prepareforcall//...ReturnTyperv=makeCall(args...);//[1]//dismissthecall//...returnrv;}当然在ReturnType时编译正确不是void.当我在这种情况下使用它时:function(firstArg,secondArg);编译器响应error:return-statementwithavalue,infunctionreturning

c++ - 在 C++03 中将成员函数传递给 for_each(没有提升,没有 c++11)

下面的“解决方案”可以编译,但不是我想要的。我想将put成员函数传递给for_each而不是*this。使用boost不是一个选项。这可以在C++03中解决吗?#include#include#includeusingnamespacestd;classWheel{};classCar{public:voidprocess(constvector&wheel){for_each(wheel.begin(),wheel.end(),*this);}voidoperator()(constWheel&w){put(w);}private:voidput(constWheel&w){}};i

C++11 原子 x86 内存排序

在C++0x中原子变量的文档之一中,在描述内存顺序时,它提到:Release-AcquireOrderingOnstrongly-orderedsystems(x86,SPARC,IBMmainframe),release-acquireorderingisautomatic.NoadditionalCPUinstructionsareissuedforthissynchronizationmode,onlycertaincompileroptimizationsareaffected...首先,x86遵循严格的内存排序是真的吗?总是强加这一点似乎效率很低。意味着每次写入和读取都有一个