我正在尝试实现一个priority_queue
对象,该对象包含A<T>
个对象并使用自定义的Compare
方法/类型。根据{{3}},这是我的代码:
template <class T>
class A{
T value;
A(T _value):value(_value){}
};
template <class T>
class ProblematicClass{
auto cmp = [](A<T>* l, A<T>* r) {return l->value > r->value; };
std::priority_queue < A<T>*, std::vector<A<T>*>, decltype(cmp) > q(cmp);
};
但是我遇到以下错误:
错误C2853:'cmp':非静态数据成员不能具有包含'auto'的类型
我尝试制作lamda定义static
,但会导致新的语法错误:
错误C2143:语法错误:“返回”前缺少“}”
您能帮我吗?
更新:我正在使用VS2013
答案 0 :(得分:2)
不必将Bundle Version
设为静态。相反,您可以执行以下操作:
bundle version string short
别忘了加入IPA
来使它起作用。
答案 1 :(得分:2)
对我来说static
表现完美
static auto cmp = [](A<T>* l, A<T>* r) {return l->value > r->value; };
对于非静态……如何通过using
?
using lType = decltype([](A<T>* l, A<T>* r) {return l->value > r->value; });
lType cmp = lType{};