以下enable_if用法
的含义是什么?template <
typename R, typename F,
typename std::enable_if<std::is_same<typename std::remove_cv<R>::type, any>::value>::type*& = enabler,
typename... Args>
any call(F fn, Args&&... args) {
return fn(std::forward<Args>(args)...);
}
尤其是"type*& = enabler"
答案 0 :(得分:0)
它说:当且仅当非const非易失性call
模板参数的类型为R
时,启用std::any
函数,使得参数是{{1}的引用指针}}。否则,编译错误。
引用指针是对指针的引用。例如,在C ++中,我们可以执行以下操作:
enabler
但我们也可以这样做:
void func(int** ptr)
{
*ptr = new int[100]; //ptr is a pointer to pointer.
}
现在可以使用上面代码的示例..
void func(int* &ptr)
{
ptr = new int[100]; //ptr is a reference to a pointer.
}