首页 > 编程语言 >C++ 在模板三个阶段检查错误

C++ 在模板三个阶段检查错误

时间:2024-11-06 22:09:20浏览次数:1  
标签:错误 检查 C++ 编译器 阶段 模板

第一个阶段是编译模板本身时。在这个阶段,编译器通常不会发现很多错误。编译器可以检查语法错误,例如忘记分号或者变量名拼错等,但也就这么多了。

第二个阶段是编译器遇到模板使用时。在此阶段,编译器仍然没有很多可检查的。对于函数模板调用,编译器通常会检查实参数目是否正确。它还能检查参数类型是否匹配。对于类模板,编译器可以检查用户是否提供了正确数目的模板实参,但也仅限于此了。

第三个阶段是模板实例化时,只有这个阶段才能发现类型相关的错误。依赖于编译器如何管理实例化,这类错误可能在链接时才报告。




▲ 《C++ Primer》 P582

标签:错误,检查,C++,编译器,阶段,模板
From: https://www.cnblogs.com/huvjie/p/18531166

相关文章

  • C++智能指针
    C++智能指针以引用计数为基础的智能指针,引用计数的管理逻辑如下:除了初始化对象本身外,每个构造函数(拷贝构造函数除外)还要在堆上创建一个引用计数,用来记录有多少个对象共享状态。当我们创建一个对象时,只有一个对象共享状态,因此将引用计数初始化为1;拷贝构造函数不分配新的计数器......
  • C/C++中的volatile
    C/C++中的volatile约定Volatile这个话题,涉及到计算机科学多个领域多个层次的诸多细节。仅靠一篇博客,很难穷尽这些细节。因此,若不对讨论范围做一些约定,很容易就有诸多漏洞。到时误人子弟,就不好了。以下是一些基本的约定:1这篇博文讨论的volatile关键字,是C和C++语言中的......
  • c++蠕虫文学
    c++犹如蠕虫一样侵蚀你的大脑一起来看看    一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?   这里要求不足......
  • C++手撕 --基本数据结构的简单实现(2)
    C++面试手撕代码----基本数据结构的简单实现(2)1.哈希表(unordered_map):#include<vector>#include<iostream>#include<list>//forlist#include<utility>//forpair#include<functional>//forstd::hashusingnamespacestd;template<typ......
  • LevelDB 源码中的 C++ 奇淫技巧
    LevelDB整体代码还是比较好懂,没有用很多C++奇淫技巧。不过还是有部分实现,相当比较少见,比如柔性数组、链接符号导出、Pimpl类设计等。本文会梳理这里的C++高级技巧,帮助更好地理解LevelDB的实现。柔性数组在util/cache.cc的LRUHandle结构体定义中,有一个柔性数组(fl......
  • C++算法相关一些小细节
    C++算法相关一些小细节cin>>stl;//输入字符串时,遇到空格或者回车就会停止cout<<stl<<endl;//输出字符串时,遇到空格或者回车不会停止若要往字符数组读入一行字符串,包括空格,那么就要写成           String类1. 2.3.不能用printf直接......
  • 「C/C++」C++标准库 之 #include<iostream> 标准输入输出
    ✨博客主页何曾参静谧的博客......
  • 「C/C++」C++标准库 之 #include<functional> 函数模板库
    ✨博客主页何曾参静谧的博客......
  • 「C/C++」C/C++标准库 之 #include<cctype> 字符分类处理库
    ✨博客主页何曾参静谧的博客......
  • c++控制台
    文章简介由于许多初学者可能都会想编一个自己的游戏,却由于表现形式不够而困扰,因此有了这篇文章。警告:system需谨慎,死机两行泪。一、光标1、隐藏光标voidHideCursor(){ CONSOLE_CURSOR_INFOcursor_info={1,0}; SetConsoleCursorInfo(GetStdHandle(STD......