Использование auto/decltype для вывода типа массива

Чтобы сделать std::pair из строки и связанной функции, мне удалось сделать следующее

auto f1 = std::make_pair(std::wstring(L"send_order"),std::bind(&RESTListener::send_order, this, std::placeholders::_1));
auto f2 = std::make_pair(std::wstring(L"on_cancel_order"), std::bind(&RESTListener::on_cancel_all, this, std::placeholders::_1));
auto connectors = std::array<decltype(f1),2>({ f1,f2 });

Есть ли способ автоматического вывода типа массива дальше, чтобы я мог напечатать что-то вроде

auto connectors = std::array<?????,2>({std::make_pair(std::wstring(L"send_order"),std::bind(&RESTListener::send_order, this, std::placeholders::_1)),std::make_pair(std::wstring(L"on_cancel_order"), std::bind(&RESTListener::on_cancel_all,this, std::placeholders::_1))});

1 ответ

Решение

Как указывает @nwp, более простое решение - помнить, что std::initializer_list создается при выполнении auto foo = {,}. Таким образом, более краткое решение

auto connectors = {std::make_pair(std::wstring(L"send_order"),std::bind(&RESTListener::send_order, this, std::placeholders::_1)),
                   std::make_pair(std::wstring(L"on_cancel_order"), std::bind(&RESTListener::on_cancel_all, this, std::placeholders::_1)) };
Другие вопросы по тегам