草庐IT

c++ - 是否可以定义一个 C++11 可变参数类模板,其可变参数基数取决于整数模板参数?

很抱歉问了这个令人费解的问题,但基本上这个想法很简单。我有一个可变类模板:templateclassA{...};我想要一个A类生成器,它接受一个整数模板参数N并实例化一个具有N个P3s参数的A类。喜欢:templateclassGenA:/*somehow*/:publicA{...};所以用法是://GeneratesAGenAa;我已经尝试过使用编译时递归和部分特化来做到这一点templateclassGenA:publicGenA{...}templateclassGenA:publicA{...}但是C++11不承认第二个模板是第一个模板的特化(因为它实际上是不同的)并且永远

c++ - 在 C++11 中检查对象类型

我有继承自A的类B。classA{};classB:publicA{};我有三个对象。A*a=newA();A*a2=newB();B*b=newB();我想检查a是A类型的对象,a2是B类型的对象(不是A),b是B类型的对象。我试过输入比较,但没有给出正确答案。cout1cout1cout0cout0cout0cout1我尝试了动态转换,但出现了编译错误。B*derived=dynamic_cast(a);if(derived){cout(a2);if(derived){cout(b);if(derived){cout(a);^typename.cpp:31:34:error:can

c++ - 加速 C++ 练习 11-6

在ch11练习11-6中卡在了删除函数中。我已经销毁了对象,但我不知道如何使用分配器库中的释放来返回空间。请保释我。PS:这不是作业,但我在家练习下面是来自AcceleratedC++的代码,之后是我修改过的删除函数。谢谢`templateclassVec{public:typedefT*iterator;typedefconstT*const_iterator;typedefsize_tsize_type;typedefTvalue_type;typedefT&reference;typedefconstT&const_reference;Vec(){create();}explic

c++ - 检查 C++11 中返回的 std::function 是否为 "valid"

我想像这样实现一个动态任务队列:typedefstd::functionJob;typedefstd::functionJobGenerator;//..JobGeneratorgen=...;autojob=gen();while(IsValidFunction(job)){job();}如何实现IsValidFunction?std::function是否有某种默认值可供检查? 最佳答案 您可以简单地检查job作为一个bool值:while(autojob=gen()){job();}这是一种简写形式,它赋值job来自gen()

c++ - 如何迭代 std::string 中的所有正则表达式匹配及其在 c++11 std::regex 中的起始位置?

我知道两种从std::string获取正则表达式匹配的方法,但我不知道如何获取所有匹配及其各自的偏移量。#include#include#includeintmain(){usingnamespacestd;strings="123apples456oranges789bananasorangesbananas";regexr=regex("[a-z]+");constsregex_token_iteratorend;//hereIknowhowtogetalloccurences//butdon'tknowhowtogetstartingoffsetofeachonefor(sreg

C++11 future.wait_for() 总是返回 future_status::timeout

我有一个C++11程序来检查一个数是否为素数。程序等待准备就绪的future对象。准备就绪后,程序会告知future对象的提供者函数是否认为该数字是质数。//futureexample#include//std::cout#include//std::async,std::future#include//std::chrono::millisecondsconstintnumber=4;//444444443//anon-optimizedwayofcheckingforprimenumbers:boolis_prime(intx){for(inti=2;ifut=std::async

C++11 Lambda 通过捕获传递

这个问题在这里已经有了答案:C++lambdawithcapturesasafunctionpointer(9个回答)关闭4年前。我正在尝试使用capture[&]传递lambda函数。存储捕获lambda的变量的正确声明是什么?[下面的f2]//Non-capturingvoid(*f1)()=[](){};//Works//Allbyreferencevoid(*f2)()=[&](){};//SyntaxError

c++ - InterlockedExchangePointer 是否有裸露的 c++ 11(或 boost)替代品?

寻找Win32InterlockedExchangePointer的便携、简单和优雅的替代品。理想情况下仅使用C++11,但boost也可以。 最佳答案 standardatomictypes有一个原子exchange功能。所以微软人PVOIDvolatiletarget;old_value=InterlockedExchangePointer(&target,new_value);会变成std::atomictarget;old_value=target.exchange(new_value);

c++ - 在 C++11 中实现一个简单的通用线程池

我想创建一个线程池用于实验目的(以及有趣的因素)。它应该能够处理各种各样的任务(所以我可能会在以后的项目中使用它)。在我的线程池类中,我将需要某种任务队列。由于标准库提供了std::packaged_task由于C++11标准,我的队列看起来像std::deque>task_queue,所以客户端可以推送std::packaged_tasks通过某种公共(public)接口(interface)函数进入队列(然后池中的一个线程将收到条件变量通知以执行它,等等)。我的问题与std::packaged_task的模板参数有关在双端队列中。函数签名?()应该能够处理任何类型/数量的参数,因为

c++ - 我在 Xcode 中使用 C++11 时遇到一些问题

我是使用XcodeforC++的MacOSXLion用户,似乎没有适用于Xcode的更新。我似乎无法编译C++11专用代码,但无论出于何种原因,我认为Apple几乎已经实现了C++11。是的,我确实支持命令行工具。话又说回来,那可能只是我。如果是这样,是否有任何类型的IDE支持C++11,或者有什么升级方法? 最佳答案 我使用Xcode并设置了以下设置:C++语言方言:C++11或GNU++11C++标准库:libc++(支持C++11的LLVMC++标准库)Xcode版本:4.3.2