c++ - 如何像传递未定义函数一样传递未定义方法

标签 c++ function methods expression pointer-to-member

鉴于我正在传递 undefined 函数:

void foo(char, short);

learned how通过使用此函数调用 decltype(m(foo)) 来获取参数的类型 tuple:

template <typename Ret, typename... Args>
tuple<Args...> m(Ret(Args...));

我现在想传递一个未定义方法:

struct bar { void foo(char, short); };

我试过像这样重写 m:

template <typename Ret, typename C, typename... Args>
tuple<Args...> m(Ret(C::*)(Args...));

但是当I try to call thisdecltype(m(bar::foo)) 类似,我得到错误:

invalid use of non-static member function void bar::foo(char, short int)

如何像传递函数一样传递此方法?

最佳答案

如果你只想在上面使用decltype,你只需要一个额外的&:

decltype(m(&bar::foo))

关于c++ - 如何像传递未定义函数一样传递未定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38482805/

相关文章:

java - 将列表的元素分组为子列表(可能使用 Guava )

c++ - 类型在编译时已知的虚拟方法

c++ - C++11 中的异步 IO

c++ - 在 C++ 中为 Matlab 准备矩阵

c++在用户输入的内容上添加多个变量

C++:寻址函数的字符限制?

oracle - 考虑到在数据库服务器上定义的NLS_NUMERIC_CHARACTERS,如何使用正确的TO_NUMBER()Oracle函数?

java - 如何从主类调用另一个 Activity 的方法

java - 如何从索引处的数组中删除项目?

c++ - 重载一个新的运算符——这段代码不应该产生错误吗