小编joh*_*zac的帖子

用于C++中成员函数的const&,&和&&说明符

最近我正在阅读APIboost::optional并且遇到了以下问题:

T const& operator *() const& ;
T&       operator *() & ;
T&&      operator *() && ;
Run Code Online (Sandbox Code Playgroud)

我还编写了自己的程序,将成员函数定义为const&,&和&&(请注意,我不是在谈论返回类型,而是在分号之前的说明符),它们似乎工作正常.

我知道声明一个成员函数const意味着什么,但任何人都可以解释它是什么意思来声明它const&,&和&&.

c++ const c++11

54
推荐指数
2
解决办法
7202
查看次数

使用反向迭代器插入std :: list会更改原始反向迭代器的值

已经搜索了很多网,但找不到问题的答案.

我使用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)

c++ stdlist reverse-iterator

6
推荐指数
1
解决办法
1841
查看次数

Boost Beast 在关闭后重新连接 websocket 连接

我正在使用 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)

c++ boost boost-asio c++11 boost-beast

5
推荐指数
0
解决办法
1959
查看次数

标签 统计

c++ ×3

c++11 ×2

boost ×1

boost-asio ×1

boost-beast ×1

const ×1

reverse-iterator ×1

stdlist ×1