使用 auto/decltype 推导数组类型
Using auto/decltype to deduce array type
为了制作一个 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))});
正如@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)) };
为了制作一个 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))});
正如@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)) };