【发布时间】:2015-06-29 22:21:41
【问题描述】:
是否可以调用一个对函数进行右值引用的函数?例如:
#include <iostream>
void foo(void(&f)(int))
{
std::cout << "A" << std::endl;
}
void foo(void(&&f)(int))
{
std::cout << "B" << std::endl;
}
我可以调用打印“B”的foo 的重载吗?
【问题讨论】:
-
“那么这里:blahblahblah” 嗯,请问什么?你真的问过问题吗??你想赢究竟是什么?请详细说明,edit您的问题。这是一个披着Gimme teh codez plz的请求吗?
-
你尝试了什么?您为什么不更加努力地编写所需的文本呢? (顺便说一句,函数指针的右值引用?)
-
@0x499602D2 这很有趣...我想知道为什么它在 gcc 中编译而不在 clang 中。
-
@rubix_addict 我认为 gcc 和 clang 在这里是错误的。在 gcc 中,应该调用左值重载,因为即使它的返回类型是右值引用,运算符函数的结果也应该是左值。而且 clang 甚至没有尝试调用
wrap的操作符函数(它应该这样做)。