外部参照换行错误:'void'函数返回值
xrefwrap error: 'void' function returning a value
我在用Visual Studio 2012编译我的项目时遇到了这个奇怪的错误:
error C2562: 'std::_Callable_obj<_Ty>::_ApplyX' : 'void' function returning a value C:Program Files (x86)Microsoft Visual Studio 11.0VCincludexrefwrap
跳入xrefwrap
时,错误来自这一行:
_VARIADIC_EXPAND_0X(_APPLYX_CALLOBJ, , , , )
我的代码在Linux上的GCC编译得很好。另外,编译器没有向我提供有关导致此错误的原因的信息。
此错误的原因可能是什么?我怀疑这段代码可能是源代码,但只是因为我在那里使用了std::ref
:
_listener.addSocket(clientSock, std::bind(&Client::handleReceive, &client,
_1, std::ref(*this)),
std::bind(&Lounge::handleClientDisconnect, this,
std::cref(client)));
以下是我绑定的成员函数的两个签名:
bool Client::handleReceive(std::shared_ptr<TBSystem::network::sockets::ITcpSocket>& socket,
Lounge& lounge);
void Lounge::handleClientDisconnect(const Client& c);
我确实在 Client::handleReceive
中返回一个值。
这是我在调用addSocket
时使用的两个std::function
原型:
typedef std::function<bool (std::shared_ptr<sockets::ITcpSocket>&)> readCallback;
typedef std::function<void ()> disconnectCallback;
好吧,事实证明,在我的一个文件中,我添加了一个具有错误原型的侦听器(std::plus
)...
_listener.addSocket(serverSocket,
std::bind(&Lounge::acceptClient, this, _1),
std::bind(std::plus<int>(), 0, 0);
相关文章:
- 程序不向函数返回值
- 如何将不可移动和不可复制的函数返回值获取到数组中
- 存储函数返回值或立即使用c++
- 如何删除新分配的字符,这也是函数返回值?
- 不从函数返回值会导致段错误
- lambda 函数返回值的有效性
- 如何获取有关 Visual Studio 代码分析中未经检查的函数返回值的警告
- 存储指向函数返回值的指针
- 在 OOP 中,调用函数返回值还是直接调用值更快?
- 函数返回值的自动类型扣除
- 为循环中多次调用的函数返回值预分配内存的正确方法是什么
- 函数返回值的位运算符提升
- 从捕获 constexpr 函数返回值的变量中删除 constexpr 会删除编译时计算
- C++ ReSharper - 生成函数返回值/参数类型的变量
- std::clamp - 检测函数返回值是否绑定到 const T&
- C 递归函数返回值
- 是否可以在C 中使回调函数返回值
- C++标准是否保证函数返回值具有常量地址?
- 将函数返回值传递给引用参数会导致 GCC 中的编译错误
- 函数返回值错误