c++17新特性

Mr_WangAndy21 天前
c++·string_view·c++40周年·c++17新特性·c++新特性any
C++17 新特性_第二章 C++17 语言特性_std::any和string_view本文记录C++17新特性之std::any和string_view.在C++11和C++14中,如果我们想在同一个变量中存储不同类型的值,可以使用如下方法: 方式1,void* 指针:这是 C 语言时代的解决方案。虽然灵活,但它完全丧失了类型信息,极其不安全,且无法自动管理内存(需要手动转换和释放)。 方式2,union:只能存储预定义的几种类型,且对于非平凡类型(non-trivial types,如 std::string)的支持非常有限且复杂。 C++17中 std::any 的引入旨在提供一种类型
Mr_WangAndy21 天前
c++·c++40周年·c++17新特性·__has_include·u8字面量
C++17 新特性_第一章 C++17 语言特性___has_include,u8字符字面量本文记录C++17新特性之__has_include和u8字面量。在C++17之前,在编写跨平台代码时,通常面临这样一个难题:如何直到当前环境包含头文件呢?以前我们只依赖构造系统(如CMake)在编译之前进行检测,如:
Mr_WangAndy21 天前
c++·invoke·c++40周年·c++17新特性·invoke_result
C++17 新特性_第二章 C++17标准库特性_std::invoke和std::invoke_result_t本文记录C++17新特性之invoke和invoke_result_t.C++17之前,编写泛型代码处理回调时,调用不同的“可调用对象“(普通函数、函数指针、成员函数指针、以及仿函数(Functors)和 Lambda 表达式)时,需要不同的调用形式:
Mr_WangAndy21 天前
c++·c++40周年·if constexpr·类模板参数推导 ctad·c++17新特性
C++17 新特性_第一章 C++17 语言特性_if constexpr,类模板参数推导 (CTAD)本文记录C++17特性之if constexpr和类模板参数推导 (CTAD)。C++17之前,如果想在模板函数中根据类型执行不同的逻辑,通常只有两种选择,SFINAE或标签分发 假如要实现一个print函数,根据类型打印信息:
我是有底线的