
C++11/14/17
hp_cpp
这个作者很懒,什么都没留下…
展开
-
C++11起函数模板支持偏特化的疑惑
很多地方说“函数模板不能偏特化”,这个如果是按照03的标准来说,应该没有问题。(现在没有用之前的编译器测,如果这里有问题,请麻烦指正)。于是抱着怀疑的态度,测试了一下,函数模板的偏特化,等着编译器报错:template.h#ifndef TEMPLATE_H#define TEMPLATE_H#include <iostream>#include <map>template <typename T, typename U>void tfunc(T&am原创 2020-08-31 21:17:16 · 1256 阅读 · 2 评论 -
C++11 类型推导decltype(三)
decltype用于生成变量名或者表达式的类型,其生成的结果有的是显而易见的,可以预测的,容易理解,有些则不容易理解。大多数情况下,与使用模板和auto时进行的类型推断相比,decltype作用于变量名或者表达式只是重复了一次变量名或者表达式的确切类型:const int i = 0; // decltype(i) 为 const intbool f(const Widget& w); // decltype(w)转载 2020-08-21 11:24:01 · 487 阅读 · 1 评论 -
C++11 类型推导decltype(二)
目录一. decltype的意义二. decltype用法(1) 基本用法(2) 与const结合(3) 与引用结合(4) 与指针结合三、 decltype总结一. decltype的意义有时我们希望从表达式的类型推断出要定义的变量类型,但是不想用该表达式的值初始化变量(初始化可以用auto)。为了满足这一需求,C++11新标准引入了decltype类型说明符,它的作用是选择并返回操作数的数据类型,在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。二. decltype用法(1)转载 2020-08-21 11:14:48 · 251 阅读 · 0 评论 -
C++11 类型推导decltype(一)
我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行。RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称。同时在C++11中typeid还提供了hash_code这个成员函数,用于返回类型的唯一哈希值。RTTI会导致运行时效率降低,且在泛型编程中,我们更需要的是编译时就要确定类型,RTTI并无法满足这样的要求。编译时类型推导的出现正是为了泛型编程,在非泛型编程中,我们的类型都是确定转载 2020-08-21 10:41:17 · 748 阅读 · 0 评论 -
C++中的std::boolalpha和std::noboolalpha用法
std::boolalpha, std::noboolalpha定义在头文件<ios> 中,平时使用的时候,包含#include <iostream>即可,如果你想知道为什么,看看这里的图就知道:Input/output library通过例子看他们两个的用法,非常简单:#include <iostream>int main(){ std::cout << std::boolalpha << "boolalpha true: " &原创 2020-08-20 10:21:42 · 1481 阅读 · 0 评论 -
C++ auto 关键字的使用
这篇文章对C++中的auto关键字的使用较为详细,故进行转载,并重新排版,留作日后复习的资料,也希望大家能有所收获。转自:https://www.cnblogs.com/KunLunSu/p/7861330.html目录C++98 autoC++11 autoauto的用法注意事项一、auto 变量必须在定义时初始化,这类似于const关键字。二、定义在一个auto序列的变量必须始终推导成同一类型。三、auto关键字做类型自动推导的规则1. 如果初始化表达式是引用,则去除引用语义。2. 如果初始化表达式转载 2020-08-19 10:34:18 · 1302 阅读 · 0 评论 -
C++ std::is_const的用法
在学习《深入应用C++代码优化与工程级应用》的第3章的时候,运行代码,发现一点印刷错误和自己在vs2017和mingw中运行的结果不同(运行结果以编译器中的为准)#include <iostream>#include <type_traits>int main(){ std::cout << std::boolalpha; std::cout << "is_const:" << std::endl; std::cout <&原创 2020-08-17 10:52:21 · 1490 阅读 · 3 评论 -
C++ dynamic_cast的使用
C++11中引入了一些新的类型转换操作符,我们来看看dynamic_cast的使用。首先,让我们考虑一下:在什么场景下我们希望使用dynamic_cast呢?#include <iostream>class Base{public: virtual void print() { std::cout << "Base print" << std...原创 2020-01-27 21:38:49 · 8785 阅读 · 2 评论 -
C++中强制变换之const_cast的疑惑
看下面一段代码:#include <iostream> int main() { int i = 3; const int& cref_i = i; const_cast<int&>(cref_i) = 4; // OK: modifies i std::cout << "i = " << i << " c...原创 2020-01-27 19:59:32 · 264 阅读 · 0 评论