范型设计中的编译问题

victor_cui 2003-08-19 03:40:53
template <bool flag, typename T, typename U>
struct select
{
typedef T result;
};
template <typename T, typename U>
struct select<false, T, U>
{
typedef U result;
};
这是范型设计中类型选择的典型样例,在《c++设计新思维》中还有很多类似的代码都不能编译成功,我用的编译器包括:vc6,vc7,c++builder6,dev-cpp4.9.8,watcom等等,请问谁知道什么原因,谢谢!!!
...全文
29 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
aflyinghorse 2003-08-20
  • 打赏
  • 举报
回复
结帖
redleaves 2003-08-19
  • 打赏
  • 举报
回复
除了VC6基本上算不上“C++”编译器,呵呵(可能说的有点过)
其它的C++编译器对C++特性支持还算可以,大部分的功能可以实现。
不过,到目前为止,好像vc7.1(VS2003.NET)对C++标准支持得最全,近来用Intel的编译器也不错,它的说明上只列出了三项特性它不支持,而且还是很特殊的用法。
aflyinghorse 2003-08-19
  • 打赏
  • 举报
回复
cout<<sizeof(tselect<false,int,char>::result); 结果为1
cout<<sizeof(tselect<true,int,char>::result); 结果为4
aflyinghorse 2003-08-19
  • 打赏
  • 举报
回复
楼主,dev-cpp4.9.8可以通过
你的select和标准库的select冲突了,改名就好了
template <bool flag, typename T, typename U>
struct tselect
{
typedef T result;
};
template <typename T, typename U>
struct tselect<false, T, U>
{
typedef U result;
};
sevecol 2003-08-19
  • 打赏
  • 举报
回复
上面的代码需要在支持偏特化的编译器才能通过。

建议使用vs2003.net
张素琴老师编写的第二版,英文课件全套 第1章 引论 1.1 什么是编译程序 1.2 编译过程和编译程序的结构 1.2.1 编译过程概述 1.2.2 编译程序的结构 1.2.3 编译阶段的组合 1.3 解释程序和一些软件工具 1.3.1 解释程序 1.3.2 处理源程序的软件工具 1.4 程序设计语言范型 练习第2章 PL/0编程程序的实现 2.1 PL/0语言描述 2.1.1 PL/0语言的语汉描述图 2.1.2 PL/0语言文法的EBNF表示 2.2 PL/0编译程序的结构 2.3 PL/0编译程序的词法分析 2.4 PL/0编译程序的语法语义分析 2.5 PL/0编译程序的目标代码结构和代码生成 2.6 PL/0编译程序的语法错误处理 2.7 PL/0编译程序的目标代码解释执行时的存储分配 练习第3章 文法和语言 3.1 文法的直观概念 3.2 符号和符号串 3.3 文法和语言的形式定义 3.4 文法的类型 3.5 上下文无关文法及其语法树 3.6 句型的分析 3.6.1 自上而下的分析方法 3.6.2 自下而上的分析方法 3.6.3 句型分析的有关问题 3.7 有关文法实用的一些说明 3.7.1 有关文法的实用限制 3.7.2 上下文无关文法的规则 3.8 典型例题解答 练习第4章 词法分析 4.1 词法分析程序的设计 4.1.1 词法分析程序与语法分析程序的接口方式 4.1.2 词法分析程序的输出 4.1.3 将词法分析工作分离的考虑 4.2 单词的描述工具 4.2.1 正规文法 4.2.2 正规式 4.2.3 正规文法和正规式的等性 4.3 有穷自动机 4.3.1 确定的有穷自动机(DFA) 4.3.2 不确定的有穷自动机(NFA) 4.3.3 NFA转换为等价的DFA 4.3.4 确定有穷自动机的化简 4.4 正规式和有穷自动机的等价性 4.5 正规文法和有穷自动机的等价性 4.6 词法分析程序的自动构造工具 4.7 典型例题及解答 练习第5章 自顶向下语法分析方法 5.1 确定的自顶向下分析思想 5.2 LL(1)文法的判别 5.3 某些非LL(1)文法到LL(1)文法的等价变换 5.4 不确定的自顶向下分析思想 5.5 确定的自顶向下分析方法 5.5.1 递归子程序法 5.5.2 预测分析方法 5.6 典型例题及解答 练习第6章 自底向上优先分析 6.1 自底向上优先分析概述 6.2 简单优先分析法 6.2.1 优先关系 6.2.2 简单优先文法的定义 6.2.3 简单优先分析法的操作步骤 6.3 算符优先分析法 6.3.1 直观算符优先分析法 6.3.2 算符优先文法的定义 6.3.3 算符优先关系表的构造 6.3.4 算符优先分析算法 6.3.5 优先函数 6.3.6 算符优先分析法的局限性 6.4 典型例题及解答 练习第7章 LR分析 7.1 LR分析概述 7.2 LR(0)分析 7.2.1 可归前缀和子前缀 7.2.2 识别活前缀的有限自动机 7.2.3 活前缀及其可归前缀的一般计算方法 7.2.4 LR(0)项目集规范族的构造 7.3 SLR(1)分析 7.4 LR(1)分析 7.4.1 LR(1)项目集族的构造 7.4.2 LR(1)分析表的构造 7.5 LALR(1)分析 7.6 二义性文法在LR分析的应用 7.7 语法分析程序的自动构造工具YACC 7.8 典型例题及解答 练习第8章 语法制导翻译和间代码生成 8.1 属性文法 8.2 语法制导翻译概论 8.2.1 计算语义规则 8.2.2 S-属性方法和自下而上翻译 8.2.3 L-属性文法在自上而下分析的实现 8.2.4 L-属性文法在自下而上分析的实现 8.3 间代码的形式 8.3.1 逆波壮大记号 8.3.2 三元式和树表表示 8.3.3 四元式 8.4 简单赋值语句的翻译 8.5 布尔表达式的翻译 8.5.1 布尔表达式的翻译方法 8.5.2 控制语句布尔表达式的翻译 8.6 控制结构的翻译 8.6.1 条件转移 8.6.2 开关语句 8.6.3 for循环语句 8.6.4 出口语句 8.6.5 goto语句 8.6.6 过程调用的四元式产生 8.7 说明语句的翻译 8.7.1 简单说明语句的翻译 8.7.2 过程的说明 8.8 数组和结构的翻译 8.8.1 数组说明和数组元素的引用 8.8.2 结构(记录)说明和引用的翻译 练习 第9章 符号表 9.1 符号表的作用和地位 9.2 符号的主要属性及作用 9.3 符号表的组织 9.3.1 符号表的总体组织 9.3.2 符号表项的排列 9.3.3 关键字域的组织 9.3.4 其他域的组织 9.3.5 下堆链域的组织 9.4 符号表的管理 9.4.1 符号表的初始化 9.4.2 符号的登录 9.4.3 符号的查找 9.4.4 符号表的分程序结构层次的管理 第10章 目标程序运行时的存储组织 10.1 数据空间的三种不同使用方法和管理方法 10.1.1 静态存储分配 10.1.2 动态存储分配 10.1.3 栈式动态存储分配 10.1.4 堆式动态存储分配 10.2 栈式存储分配的实现 10.2.1 简单的栈式存储分配的实现 10.2.2 嵌套过程语言的栈式实现 10.2.3 分程序结构的存储管理 10.3 参数传递 10.3.1 传值 10.3.2 传地址 10.3.3 过程参数 10.4 过程调用、过程进入和过程返回 练习 第11章 代码优化 11.1 优化技术简介 11.2 局部优化 11.2.1 基本块的划分 11.2.2 基本块的变换 11.2.3 基本块的有向图DAG(Directed Acyclic Graph)表示 11.2.4 DAG的应用 11.3 控制流分析和循环优化 11.3.1 程序流图 11.3.2 循环的查找 11.3.3 循环优化 11.4 数据流的分析与全局优化 11.4.1 一些主要的概念 11.4.2 数据流言程的一般形式 11.4.3 到达-定值数据流方程 11.4.4 可用表达式及其数据流方程 11.4.5 活跃变量数据流方程 11.4.6 复写传播 练习 第12章 代码生成 12.1 代码生成概述 12.1.1 代码生成程序在编译系统的位置 12.1.2 设计代码生成程序的基本问题 12.2 一个简单的代码生成程序 12.2.1 计算机模型 12.2.2 待用信息链表法 12.2.3 代码生成算法 12.3 几种常用的代码生成程序的开发方法 12.3.1 解释性代码生成法 12.3.2 模式匹配代码生成法 12.3.3 表驱动代码生成法 12.4 全局寄存器分配(图着色法) 12.4.1 概述 12.4.2 图着色寄存器分配法的相关技术 12.4.3 示例 12.5 代码生成程序的自动化构造 12.5.1 模式匹配与动态规划 12.5.2 基于语法制导的代码生成程序自动构造技术 12.5.3 基于语义制导的代码生成程序自动构造技术 练习 第13章 编译程序的构造 13.1 编译程序的书写 13.1.1 编译程序的书写语言与T型图 13.1.2 编译程序的自展技术 13.2 可重定向编译程序 13.2.1 概述 13.2.2 支持可重定向编译的关键技术 13.2.3 常用的可重定编译程序 13.3 GCC的剖析 13.3.1 GCC的总体结构 13.3.2 GCC的间表示 13.3.3 GCC的机器描述 13.3.4 GCC的代码生成与机器描述的接口 13.4 GCC的定制 13.4.1 GCC的剪裁 13.4.2 GCC编译程序的安装与配置 13.5 GCC的优化 13.5.1 概述 13.5.2 窥孔优化 13.5.3 基于机器描述的窥孔优化 13.5.4 修改GCC源程序的窥孔优化 练习 第14章 面向对象语言的编译 14.1 面向对象语言的基本概念 14.2 面向对象语言语法结构及语义处理的特征 14.2.1 面向对象语言的类的语法结构及语义 14.2.2 面向对象语言的有效类、延迟类及延迟成员 14.2.3 面向对象语言的类属类 14.2.4 面向对象语言的继承类 14.3 多态实例变量、多态引用的类型检查及绑定 14.3.1 实例变量和多态引用 14.3.2 静态类型检查及动态类型检查 14.3.3 对象的创建 14.4 面向对象操作的语义 14.4.1 类名的属性构造 14.4.2 类名的属性及其结构 14.5 类成员名的属性及其结构 14.5.1 类名的属性及其结构 14.5.2 类成员名的属性及其结构 14.6 对象的存储管理及废弃单元回收 14.6.1 对象的三种存储区组织管理方式 14.6.2 静态模型和栈式模型废弃单元的回收 14.6.3 堆式模型废弃单元的回收 练习 第15章 编译程序的面向对象构造 15.1 编译程序面向对象构造的基本概念 15.1.1 编译程序的需求 15.1.2 编译程序的分解 15.1.3 类的构造层次 15.1.4 类的特性定义 15.2 构造编译程序的面向对象类库 15.2.1 对传统编译程序构造软件复用的分析 15.2.2 面向对象编译类库的地位 15.2.3 语言编译论的面向对象论域分析 15.3面向对象编译程序的符号表构造 练习 附录A PL、0编译程序文本 A.1 Pascal版本 A.2 C版本 参考文献
计算机专业相关课程描述全文共3页,当前为第1页。计算机专业相关课程描述全文共3页,当前为第1页。计算机专业相关课程描述 计算机专业相关课程描述全文共3页,当前为第1页。 计算机专业相关课程描述全文共3页,当前为第1页。 序号 课程名称 课程描述 1 程序设计基础 本课程主要介绍 C 语言的基本语法、基本语句、数据类型、基本控制结构以及程序设计的一般方法,使学生具有使用当今流行的系统平台的初步能力,具有熟练使用 C 语言编程解决实际问题的能力。 2 程序设计基础课程设计 课程设计的目的在于加深对结构化程序设计思想的深入理解。掌握程序设计基本流程;掌握数据定义、存储、管理、输入及输出功能所需具备的知识;提高学生分析问题、解决问题的能力;培养学生综合运用程序设计工具解决实际问题的能力。力求实现理论结合实际,学以至用的原则。 3 数据结构 数据结构课程是计算机相关专业的专业基础课、必修课程,主要介绍用计算机解决一系列问题特别是非数值信息处理问题时所用的各种组织数 据的方法、存储数据结构的方法以及在各种结构上执行操作的算法。通过本课程的学习,要求学生掌握各种数据结构的特点、存储表示、运算 方法以及在计算机科学最基本的应用,培养、训练学生选用合适的数据结构和编写质量高、风格好的应用程序的能力,培养学生分析问题、 解决问题的能力,并为后续课程的学习打下良好的理论基础和实践基础。 4 Java技术 通过学习,让学生真正掌握面向对象程序设计技术,使用 awt 和 Swing 包开发图形用户界面和事件驱动的程序,并能从事 JAVA Applet 小应用程序及网络通信等程序的开发。 5 程序设计艺术与方法 通过学习,使学生掌握正确的程序设计观念、程序设计创新的思维方法 和包括计划、调研、构思发想、分析、表达以及评价在内的整个设计程 序与方法,并培养学生的团队协作能力。 6 程序设计与算法训练 通过本课程的综合实践训练,使学生加深对基本知识与基本原理的理解;掌握各种数据类型的使用技巧和模块化程序设计的方法;掌握程序设计的过程和技巧,确立分析问题、建立模型和运用程序进行问题求解的思维方式;掌握复杂数据结构在计算机的存储表示及其运算,建立正确的数据组织与数据处理的设计思想,培养学生综合运用数据结构课程的相关设计理论与实际问题相结合解决数据组织与分析、数据处理与算法设计设计问题的能力。 7 汇编语言程序设计 汇编语言课程是计算机专业的一门专业选修课。通过本课程的学习,应使学生系统地了解计算机组成原理与内部的运行机理,掌握汇编语言程 序设计及相关知识,为学习本专业后继课程和进行与硬件有关的技术工作打下良好基计算机专业相关课程描述全文共3页,当前为第2页。计算机专业相关课程描述全文共3页,当前为第2页。础。通过上机实验,使学生受到软硬件实验的初步训练, 并培养学生分析问题和解决问题的能力。 计算机专业相关课程描述全文共3页,当前为第2页。 计算机专业相关课程描述全文共3页,当前为第2页。 8 机器人技术 机器人学是一门高度交叉的前沿学科,机器人技术是集力学、机械学、生物学、人类学、计算机科学与工程、控制论与控制工程学、电子工程学、人工智能、社会学等多学科知识之大成,是一项综合性很强的新技术。通过该课程的学习,使得学生基本熟悉这门技术以及其发展状况,为今后从事光机电一体化与系统设计、制造的研究工作打下基础 9 计算方法 通过本课程的学习,要使学生具有现代数学的观点和方法,并初步掌握处理计算机常用数值分析的构造思想和计算方法。同时,也要培养学生 抽象思维和慎密概括的能力,使学生具有良好的开拓专业理 的素质和使用所学知识分析和解决实际问题的能力。 10 编译原理 编译原理是一门重要基础课。通过对该课程的学习,使学生掌握编译过程的相关原理和编译技术,让学生能初步进行编译程序的开发和维护,同时促进提高学生开发软件的能力。 11 机器学习基础 本课程吸取了人工智能、概率统计、计算复杂性理论、控制论、信息论、哲学、生理学、神经生物学等学科的成果。本课主要针对机器学习这个领域,重点介绍机器学习的核心算法和理论,具体描述了多种学习范型、算法、理论以及应用。 12 计算机网络 初步掌握数据通信的基本原理、计算机网络 ISO/OSI 的七层模型和 TCP/IP 的四层模型,初步掌握各层的基本功能和实现方法。初步掌握模型的基本网络协议和网络应用层的常用协议,初步掌握计算机网络接入技术,初步掌握计算机网络安全知识,学会运用一些知识去理解现代计算机网络,使用计算机网络必须要做的安全防范措施以及计算机网络实现和现代网络应用的关系。 13 计算机组成原理 本课程是核心专业基础课程,在计算机专业的各门课程起着承上启下的重要作用。学生通过本课程的学习,可以从层次的观点,掌握计算
Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值, 单次赋值和动态类型的函数式编程语言。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。 使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被断 的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧