Yuxxxxxxxxxx's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

C++ constexpr、consteval、constinit

标准版本 特点 C++11 引入 constexpr 变量和函数;函数体限单条 return 语句 C++14 放宽 constexpr 函数限制:允许局部变量、多个 return、循环等 C++17 引入 if constexpr;constexpr static 成员变量可内联初始化;允许 constexpr Lambda C++20 允许 constexpr 虚函数、
2026-05-22
C++ > 语言特性 > C++11
#C++ #C++11

C++ STL中的 iterator_traits

一、基本概念iterator_traits 是 C++ 标准库中的一个模板类,位于 <iterator> 头文件中。它的主要作用是为迭代器提供统一的接口,允许算法以一致的方式访问迭代器的相关类型信息,而不用关心迭代器的具体类型。 在 STL 标准库提供的算法一般有以下特征: 参数一般包括 iterator 要根据 iterator 的种类,和 iterator 包装的元素的类型等信息
2026-05-21
C++ > 模板
#C++ #模板 #STL

C++标签派发(Tag Dispatching)

标签派发是在 C++ 20 引入 concept 之前模板编程的一个手段:由于 C++ 不支持函数模板的偏特化,所以为例实现偏特化而产生的一个技巧 一、引入一般重载函数的设计是根据不同的参数决定具体做什么事情,编译器会根据参数匹配的原则确定正确的重载版本。但是对于函数模板,其参数类 型是泛化的模板参数,此时又如何让编译器选择我们希望的那个函数模板的实例呢? 提供特化版本是一个方法,但是如果需要
2026-05-20
C++ > 模板
#C++ #模板

C++ std::function

在现代 C++ 中,std::function(定义在 <functional> 头文件中)是一个通用的多态函数封装器,能够存储、复制和调用任何可调用对象 。你可以把它理解为一个“能够持有任何可调用对象”的容器。 在 std::function 出现之前,我们无法在一个容器或变量中存储不同类型的“可调用对象”。 普通函数指针只能存函数指针 Lambda 的类型在编译期是唯一的匿名类型
2026-05-19
C++ > 语言特性 > C++11
#C++ #C++11 #语言特性

C++ std::result_of和std::invoke_result

在 C++ 中,有时我们需要获取函数或可调用对象的返回值类型,以便进行后续的操作,在泛型编程中很常用,特别是当不同的参数集的结果类型不同时。 在早期的 C++ 版本中,我们需要手动推导函数返回值类型,这个过程非常复杂,也容易出错。为了解决这个问题,C++11 引入了 std::result_of 和 std::result_of_t(C++14),这两个模板可以方便地获取函数或可调用对象的返回值类
2026-05-18
C++ > 语言特性 > C++11
#C++ #C++11 #语言特性 #C++17

C++ 强制类型转换运算符

将类型名作为强制类型转换运算符的做法是 C 语言的老式做法,C++ 为保持兼容而予以保留。 C++ 引入了四种功能不同的强制类型转换运算符以进行强制类型转换:static_cast、reinterpret_cast、const_cast 和 dynamic_cast。 强制类型转换是有一定风险的,有的转换并不一定安全,如把整型数值转换成指针,把基类指针转换成派生类指针,把一种函数指针转换成另一种函
2026-05-17
C++
#C++

C++ decay/decltype/declval

一、decay 在 C++ 14 后,可使用别名 std::decay_t 在 C++ 中,Decay(退化)是指将一种类型转换为另一种更简单、更“原始”的类型的过程。这通常发生在将表达式传递给函数参数或进行模板推导时。 在 C++11 中,标准库提供了 std::decay(定义在 `` 头文件中) ,它精确地实现了上述规则。它是模板元编程中非常重要的工具。 Decay-co
2026-05-17
C++ > 模板
#C++ #模板 #C++11 #语言特性

C++ SFINAE机制

使用情景: 在 C++11 之前,SFINAE 是实现类型检查的唯一手段。例如,你想编写一个函数,它只接受数字类型,而不接受字符串或自定义类,这时就需要 SFINAE SFINAE(Substitution Failure Is Not An Error) 是 C++ 模板元编程的基石之一,字面意思是:“替换失败并非错误”。 简单来说,当编译器在模板实例化过程中,如果在替换模板参数时发生失败(
2026-05-17
C++ > 模板
#C++ #模板

C++ std::exception

C++ 语言本身或者标准库抛出的异常都是 exception 的子类,称为标准异常(Standard Exception)。可以通过下面的语句来捕获所有的标准异常: 12345try{ //可能抛出异常的语句}catch(exception &e){ //处理异常的语句} 一、简介std::exception:标准异常类的基类,其类的声明在头文件
2026-05-16
C++ > 语言特性 > C++11
#C++

VS Code配置Claude Code(通过API方式)

一、前置下载首先在VS Code中下载扩展 Claude Code for VS Code: Claude Code 在 Windows 上依赖 Git Bash,必须先安装 Git。 下载地址: https://git-scm.com/install/windows 二、通过API平台获取API由于没有海外信用卡,无法直接使用 Anthropic 官方 API,可以使用国内中转平台。 在平台上
2026-05-15
工具 > AI
#AI
123…12

搜索

Hexo Fluid