gpt4 book ai didi

c++ - 如何理解 void (*&&)() 函数

转载 作者:行者123 更新时间:2023-12-05 01:50:13 26 4
gpt4 key购买 nike

我使用 C++ https://cppinsights.io/看到实例化的进度,Function&&和Function之间有些不解。

我评论了 cppinsights 生成的代码。

template<typename Function>
void bind(int type, Function&& func)
{
}

/*
// instantiated from the function above:
template<>
inline void bind<void (*)()>(int type, void (*&&)() func)
{
}
*/

template<typename Function>
void bindtwo(int type, Function func)
{
}

/*
template<>
inline void bindtwo<void (*)()>(int type, void (*func)())
{
}
*/

void test()
{
std::cout << "test" << std::endl;
}

int main()
{
bind(1, &test);
bindtwo(2, test);
}

最佳答案

how to understand void (*&&)() func

首先,上面的语法是错误的,因为func 应该出现在&& 之后,而不是()< 之后 如下所示。

经过更正(如下所示)后,func 是一个右值引用,指向一个不带参数且返回类型为 void 的函数的指针

另请注意,语法 void (*&&)() func 是错误的,正确的语法如下所示:

template<>
//----------------------------------------------vvvv----->note the placement of func has been changed here
inline void bind<void (*)()>(int type, void (*&&func)() )
{
}

关于c++ - 如何理解 void (*&&)() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73316922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com