C++ 中重载函数右值引用和左值引用匹配的优先级

C++ 中重载函数右值引用和左值引用匹配的优先级

在使用 C++ STL 里的 std::regex 时,遇到了一个问题:

cpp 复制代码
std::sregex_iterator it_begin(html.begin(), html.end(),
                               std::regex{R"raw("heading">.</h2>")raw"});

上面这种做法不行,原因是上面的代码可以匹配到下面代码:

cpp 复制代码
 regex_token_iterator(_BidIt, _BidIt, const regex_type&&, int = 0,
        regex_constants::match_flag_type = regex_constants::match_default) = delete;

但是不能匹配到下面的代码:

cpp 复制代码
 regex_token_iterator(_BidIt _First, _BidIt _Last, const regex_type& _Re, int _Sub = 0,
        regex_constants::match_flag_type _Fl = regex_constants::match_default)
        : _Pos(_First, _Last, _Re, _Fl), _Cur(0), _Subs(&_Sub, &_Sub + 1) {
        _Init(_First, _Last);
    }

验证:

cpp 复制代码
static void
value_function(const int32_t &&ir)
{
  (void)wprintf_s(L"rvalue: %d\n", ir);
}

static void
value_function(const int32_t &il)
{
  (void)wprintf_s(L"lvalue: %d\n", il);
}

int wmain(int argc, wchar_t *argv[])
{
  value_function(1);
  int n{ 2 };
  value_function(n);
}

输出结果是:

cpp 复制代码
rvalue: 1
lvalue: 2
相关推荐
m0_481147337 分钟前
枚举类高级用法
java·开发语言·windows
开往198212 分钟前
@DateTimeFormat、@JsonFormat、@JSONField区别及用法
java·前端·时间·datetime
wai歪why29 分钟前
C语言:深入理解指针(1)
c语言·开发语言
Gappsong87442 分钟前
Rufus:Ubuntu U盘启动盘制作工具详解
linux·c++·web安全·网络安全
慕y2741 小时前
Java学习第六十三部分——K8s
java·开发语言·学习
小白学大数据1 小时前
Python爬虫实战:批量下载亚马逊商品图片
开发语言·爬虫·python
你我约定有三1 小时前
RabbitMQ--批量处理
java·windows·后端·rabbitmq
Seven971 小时前
剑指offer-14、链表中倒数第k个结点
java
神仙别闹2 小时前
基于Java+MySQL实现(Web)文件共享管理系统(仿照百度文库)
java·前端·mysql
万笑佛2 小时前
java请求http服务-参数是@RequestBody String resultJson 类型
java