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
相关推荐
啊阿狸不会拉杆3 分钟前
《算法导论》第 22 章 - 基本的图算法
c++·算法·排序算法·图论·拓扑学
BestAns5 分钟前
Java中如何判断两个值是否相等?一篇文章讲透比较机制
java
freed_Day11 分钟前
Java进阶学习之Stream流的基本概念以及使用技巧
java·开发语言·学习
java1234_小锋17 分钟前
一周学会Matplotlib3 Python 数据可视化-绘制散点图(Scatter)
开发语言·python·信息可视化·matplotlib·matplotlib3
Warren9825 分钟前
Java后端面试题(含Dubbo、MQ、分布式、并发、算法)
java·开发语言·分布式·学习·算法·mybatis·dubbo
白云~️25 分钟前
html img标签设置默认图片,防止图片路径不存在导致图片不展示影响页面美观
java·前端·html
melonbo39 分钟前
桥接模式C++
开发语言·c++·设计模式·桥接模式
羊锦磊1 小时前
[ HTML 前端 ] 语法介绍和HBuilderX安装
java·开发语言·前端·html
春时似衿里1 小时前
解决“Win7共享文件夹其他电脑网络无法发现共享电脑名称”的问题
开发语言·电脑·php
羊锦磊4 小时前
[ Mybatis 多表关联查询 ] resultMap
java·开发语言·数据库·mysql·mybatis