如何获得成员函数指针的元组?我似乎找不到正确的语法。我认为这会起作用:
template <typename... T>
auto getPushBackFunctionPointers() -> std::tuple<void(std::vector<T>::*)(T const&)...>
{
return std::make_tuple(&std::vector<T>::push_back...);
}
但它不能编译(GCC 4.8.2):
错误:函数 'constexpr std::tuple::__type ...> std::make_tuple(_Elements&& ...) [with _Elements = {}] 的参数太多返回 std::make_tuple(&std::vector::推回...); ^
我通过引入这样的辅助函数找到了一种解决方法:
template <typename T>
auto getPushBackFunctionPointer() -> void(std::vector<T>::*)(T const&)
{
return &std::vector<T>::push_back;
}
template <typename... T>
auto getPushBackFunctionPointers() -> std::tuple<void(std::vector<T>::*)(T const&)...>
{
return std::make_tuple(getPushBackPointer<T>()...);
}
我可以以某种方式在单个函数中执行此操作吗?