在ISO C ++标准规范N4606的草案中,在§20.15.6中,is_callable
被定义为:
template <class Fn, class...ArgTypes, class R> struct is_callable<Fn(ArgTypes...), R>
表达式
INVOKE(declval<Fn>(),declval<ArgTypes>()...,R)
在被视为未评估的操作数时形式良好。
据我所知Fn(ArgTypes...)
是一个函数的签名,它返回一个Fn
并作为参数ArgTypes...
。
所以INVOKE(declval<Fn>(),...)
会尝试调用函数的返回值??
那么is_callable
的目标是什么?或者我哪里出错了?
答案 0 :(得分:3)