小编Mik*_*ult的帖子

在模板中获取非常量类型

我有一个可以(有时必须)采用const类型的模板类,但是有一种方法可以返回具有相同类型的类的新实例,但应该明确为非常量。例如下面的代码编译失败

template<class T> class SomeClass {
public:
    T val;
    SomeClass(T val) : val(val) {}
    SomeClass<T> other() {
        return SomeClass<T>(val);
    }
};

int main() {
    SomeClass<const int> x(5);
    SomeClass<int> y = x.other();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

因为即使在构造函数期间 val 上有一个副本,它也会复制到相同的类型 - const int。就像你可以在模板中区分T和一样const T,有没有办法区分T和“ nonconst T”?

c++ templates

5
推荐指数
1
解决办法
1706
查看次数

C++ kill方法没有不断检查标志

我有几个工作函数,调用可能会发生错误的附件函数.如果附件功能确定发生了不好的事情,我希望能够停止工作功能,而无需在工作功能中进行多次标记检查.例如,

struct Worker {
    bool badhappened = false;
    Worker() {
        std::thread([&]() {
            while ( not badhappened );
            // kill the work
        }).detach();
    }
    int WorkComponent {
        if ( badhappening() )
            badhappened = true;
        return someint;
    }
    void DoWork {
        // WorkComponents called several times
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不知道该怎么称呼kill the work.DoWork在单独的线程中发生并不是问题,但pthread_kill在C++的线程中似乎没有相应的东西.有没有涉及多次if(badhappened) return;调用的解决方案DoWork

c++ multithreading c++11

5
推荐指数
1
解决办法
408
查看次数

标签 统计

c++ ×2

c++11 ×1

multithreading ×1

templates ×1