У меня есть код, который прекрасно работает в локальной функции:
struct Divider
{
public:
size_t factor;
size_t next;
};
void foo()
{
auto cmp = [](const Divider& x, const Divider& y) { return x.next > y.next; };
std::priority_queue < Divider, std::vector<Divider>, decltype(cmp)> sieve(cmp);
// ...
}
Теперь я хотел бы переместить мою переменную sieve
в класс. Я могу написать следующее чудовище:
class Bar
{
inline static auto cmp = [](const Divider& x, const Divider& y) { return x.next > y.next; };
std::priority_queue < Divider, std::vector<Divider>, decltype(cmp)> sieve = std::priority_queue < Divider, std::vector<Divider>, decltype(cmp)>(cmp);
};
Можно ли как-нибудь написать эту конструкцию по умолчанию без указания типа дважды? Или просто чище.