typename
typename关键字是C++在标准化过程中被引入的,目的在于向编译器说明template内的某个标识符是个类型。
如:template <typename T>
class MyClass
{
typename T::SubType *ptr;
...
}
在这里,第二个typename关键字的意思是:SubType是class T内部定义的一个类型,从而ptr是一个指向T::SubType类型的指针
如果没有关键字typename,SubType会被认为是class T的一个static成员,于是被编译器理解为一个变量,从而
T::SubType *ptr;所表达的意思是:class T的static成员SubType和ptr相乘。
2、通常如果某个与模板参数相关的名称是个类型时,你就必须加上关键字typename。
3..template构建
在如下例子中:
template<int N>
void printBitset(std::bitset<N> const &bs)
{
std::cout<<bs.template to_string< char ,char_traits<char>, allocator<char> >();
}
如果没有.template,则编译器会无法得知to_string后的'<'是模板参数的开始符号,错误的人为是一个小于符号。
.template或者->template只有在template内才能被使用。
typename的更多相关文章
- C++箴言:理解typename的两个含义
C++箴言:理解typename的两个含义 问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? template<class ...
- C++中typename和class的区别
C++中typename和class的区别 在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 相信学习C++的人对c ...
- C++中typename关键字的用法
我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法
- C++ 中 typename
声明template参数时, 前缀关键字class和typename可以互换; 使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用. 从属名称(dependent ...
- Effective C++ -----条款42:了解typename的双重意义
声明template参数时,前缀关键字class和typename可互换. 请使用关键字typename标识嵌套从属类型名称:但不得在base class lists(基类列)或member init ...
- c++中typename和class的区别介绍
"typename"是一个C++程序设计语言中的关键字.相当用于泛型编程时是另一术语"class"的同义词.这个关键字用于指出模板声明(或定义)中的非独立名称( ...
- [Z] 关于c++ typename的另一种用法
在看c++ primer的时候见到了一下这种用法: typedef typename std::vector<int>::size_type size_type; 觉得这里面的typena ...
- 读书笔记_Effective_C++_条款四十二:了解typename的双重意义
顾名思义,typename有双重含意.只要你用过template,那么第一重含意一定知道,那就是声明模板的时候,我们既可以这样写: template <class T> 也可以这样写 te ...
- [Reprint]c++中typename和class的区别介绍
在c++Template中,很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢? 相信学习C++的人对class这个关键字都非常明白,clas ...
随机推荐
- jquery写插件
http://www.cnblogs.com/ajianbeyourself/p/5815689.html
- EditTextPreference点击后输入框显示隐藏内容,类似密码输入(转)
http://bbs.anzhuo.cn/thread-928131-1-1.html EditTextPreference点击后输入框显示隐藏内容,类似密码输入... [复制链接] aski ...
- 纯css来画图-border应用
基础知识: Css画图大部分是使用了css中的border来绘画图形,那首先我们就来看下border的基础知识,至于其他的遇到了再讲吧! Border的基础知识: 一般我们这样简写: border: ...
- python第十七天-----Django初体验
Django是一个MTV框架 M:models(数据库) T:templates(放置html模版) V:views(处理用户请求) 那么传说中的MVC框架又是什么呢? M:models(数据库) V ...
- Brainstorm-the walkthrough example: Image Classification
(1) 运行create data,其中包括下载cifar10,并转换为hdf5格式(详见百度百科:http://baike.baidu.com/view/771949.htm#4_2): cifar ...
- hdu 2586 How far away ?(离线求最近公共祖先)
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #i ...
- python 生成 xml文件 属性的顺序问题
需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...
- js+html+jquery 个人笔记
js+html+jquery 笔记 1.获取HTML对象 var obj = document.getElementById(elementId) 对象的值: obj.value() 2.获取jQue ...
- 第七章 springboot + retrofit(转载)
本篇博客转发自:http://www.cnblogs.com/java-zhao/p/5350861.html retrofit:一套RESTful架构的Android(Java)客户端实现. 好处: ...
- ubuntu下安装wordpress
网上大多都是说放在var/www下面 实际上新版的ubuntu默认放在 var/www/html 下面 当然这个配置是可以修改的