最近我正在阅读APIboost::optional并且遇到了以下问题:
T const& operator *() const& ;
T& operator *() & ;
T&& operator *() && ;
Run Code Online (Sandbox Code Playgroud)
我还编写了自己的程序,将成员函数定义为const&,&和&&(请注意,我不是在谈论返回类型,而是在分号之前的说明符),它们似乎工作正常.
我知道声明一个成员函数const意味着什么,但任何人都可以解释它是什么意思来声明它const&,&和&&.
已经搜索了很多网,但找不到问题的答案.
我使用reverse_iterator将值插入std :: list.虽然插入发生在预期的适当位置,但我注意到用于插入的原始reverse_iterator的值发生了变化.此外,完全不相关的reverse_iterator的值也会发生变化.我已经能够在一个简单的例子中重现这一点
#include <iostream>
#include <list>
#include <string>
int main()
{
// Creating a list of values 1, 2, 4, 5
std::list<int> myList;
myList.push_back(1);
myList.push_back(2);
myList.push_back(4);
myList.push_back(5);
// Changing it to 1, 2, 3, 4, 5 by inserting 3
std::list<int>::reverse_iterator revIter = myList.rbegin();
while(2 != *revIter)
{
std::cout << *revIter << "\t";
++revIter;
}
std::cout << "\n" << "Reverse iterator now points to " << *revIter;
// Creating a copy of the reverse Iter before inserting.
std::list<int>::reverse_iterator newRevIter …Run Code Online (Sandbox Code Playgroud) 我正在使用 boost::beast 创建 websocket 连接,到目前为止它似乎工作正常。但我无法弄清楚断开连接后是否应该替换 websocket::stream 变量。
即我有一个变量:
boost::beast::websocket::stream<boost::asio::ssl::stream<boost::asio::ip::tcp::socket>> _ws
Run Code Online (Sandbox Code Playgroud)
异步断开连接启动并完成后:
bool WebsocketConnection::startDisconnectSequence()
{
_ws.async_close(
boost::beast::websocket::close_code::normal,
boost::asio::bind_executor(
_strand,
std::bind(
&WebsocketConnection::onClose,
this,
std::placeholders::_1)));
return true;
}
Run Code Online (Sandbox Code Playgroud)
如果我想重新启动,我应该替换 _ws 变量吗
boost::asio::async_connect(
_ws.next_layer().next_layer(),
results.begin(),
results.end(),
boost::asio::bind_executor(
_strand,
std::bind(
&ASIOConnectionBase::onConnect,
this,
std::placeholders::_1)));
}
Run Code Online (Sandbox Code Playgroud)