【发布时间】:2014-03-18 21:48:59
【问题描述】:
假设有一个重载函数:
void overloaded(int) {}
void overloaded(void) {}
因为我不想(或不能)写下完整的函数签名(如 void(int) 或 void(void)),我需要仅使用函数名称(overloaded)来获取此签名,并且
它的参数类型(int 或 void)。
我使用decltype和朋友尝试了几种方法,但不幸的是没有成功。
所以,简而言之,我需要这样的东西:
cout << typeid(
get_overload(overloaded,(int)0))::type /* where the magic happens */
.name() << endl;
【问题讨论】:
-
这和stackoverflow.com/questions/21738775/…之间的唯一区别是对方想推断然后存储在
std::function中,所以那里的答案(大部分)适用于这个答案 -
但是和其他答案一样,我不确定为什么你认为你需要这个。为什么不能写完整的函数签名?
标签: c++ templates c++11 overloading overload-resolution