提问人:f1msch 提问时间:11/15/2023 更新时间:11/15/2023 访问量:32
如何设计一个满足std::queue或std::p riority_queue的模板?
How to design a template to satisfy either std::queue or std::priority_queue?
问:
我想设计一个像这样的模板
template<typename T, typename QueueType = std::queue<std::shared_ptr<T>>>
class ThreadSafeQueue {};
template<typename T>
auto cmp = [](const T& d1, const T& d2) { return d1 > d2; };
template<typename T>
using ThreadSafePriorityQueue = ThreadSafeQueue<T,
std::priority_queue<std::shared_ptr<T>,
std::vector<std::shared_ptr<T>>,
decltype(cmp<std::shared_ptr<T>>)>>;
并简单地称它为
struct S {
bool operator>(const S& other) const {
return false;
}
};
ThreadSafeQueue<S> q;
ThreadSafePriorityQueue<S> q1;
但是它无法在返回的 c++17 下编译,但在 c++20 下似乎很好。
为什么?
如果我坚持使用 c++17,如何修改它?error C2280
答: 暂无答案
评论