相关疑难解决方法(0)

通用引用和转发引用之间有区别吗?

此函数的参数将绑定到右值引用:

void f(int && i);
Run Code Online (Sandbox Code Playgroud)

但是,此函数的参数将绑定到右值或左值引用:

template <typename T>  
void f(T && t);
Run Code Online (Sandbox Code Playgroud)

我经常听到这被称为通用参考.
我也听说它被称为转发参考.
他们的意思是一样的吗?
如果函数体调用,它只是转发引用std::forward吗?

c++ templates perfect-forwarding universal-reference forwarding-reference

37
推荐指数
2
解决办法
1万
查看次数

说明符和限定符之间的相关性?

constvolatile被称为cv-qualifier由C规格.

specifierqualifier(cv-qualifier)之间究竟有什么区别?限定符也是一个说明符吗?

是否必须qualifier只有左值?

什么是限定词以外的cv-qualifier

我的上述理解是否有意义?

c++ lvalue

12
推荐指数
2
解决办法
1266
查看次数

cv-qualified意味着什么?

我已经开始看到"cv-qualified"一词被抛出很多.

回答我的上一个问题:

如果T是(可能是cv限定的)类类型(第9节),则调用T的默认构造函数(12.1)

有人可以为我定义吗?

c++ declaration definition qualifiers

6
推荐指数
2
解决办法
7460
查看次数

在 C++20 中,如何编写连续迭代器?

C++20 对std::contiguous_iterator_tag. 一些 STL 算法(例如std::copy)可以在连续迭代器上表现得更好。但是,我不清楚程序员应该如何访问这个新功能。

为了论证起见,让我们假设我们有一个完全符合 C++20 的库实现。我想编写最简单的连续迭代器。

这是我的第一次尝试。

#include <iterator>

class MyIterator {
    int *p_;
public:
    using value_type = int;
    using reference = int&;
    using pointer = int*;
    using difference_type = int;
    using iterator_category = std::contiguous_iterator_tag;
    int *operator->() const;
    int& operator*() const;
    int& operator[](int) const;
    MyIterator& operator++();
    MyIterator operator++(int);
    MyIterator& operator--();
    MyIterator operator--(int);
    MyIterator& operator+=(int);
    MyIterator& operator-=(int);
    friend auto operator<=>(MyIterator, MyIterator) = default;
    friend int operator-(MyIterator, MyIterator);
    friend MyIterator operator+(MyIterator, int);
    friend MyIterator …
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl contiguous c++20

5
推荐指数
2
解决办法
451
查看次数