一路向北
追逐梦想,永不停步......
C++博客
首页
新随笔
联系
聚合
管理
随笔-4 评论-40 文章-117 trackbacks-0
关于 return void()
大家都知道,return 用来在函数里返回,有两种形式:一是 直接用return; 或者省略,表示无返回值。二是 return expression; 返回一个值。
今天测试时我发现两种以前没注意的方式,也是正确的。
<1>.
void
FuncA()
{
return
void
();
//
正确的,同:return;
}
<2>.
void
FuncB()
{
return
FuncA();
//
也可以,同: FuncA();
}
这两种特性在某些情况下,是很有用的。比如,我要写一个函数模板,以 任意的模板参数类型 T 为返回值。
template
<
typename T
>
T FuncC()
{
return
T();
//
这里举例返回 T();
}
template
<
typename T
>
T FuncD()
{
return
FuncC
<
T
>
();
}
所以即使对于 返回值 为 void 的情况,FuncD<void>(); 也是适用的。
如果编译器不支持这种特性。那么当我们就得针对void返回类型进行特化,或者函数重载,示例代码如下:
//
一般处理
template
<
typename T
>
T FuncE()
{
return
FuncC
<
T
>
();
}
//
特化版本
template
<>
void
FuncE
<
void
>
()
{
FuncC
<
void
>
();
}
//
或者进行重载亦可
void
FuncE()
{
FuncC
<
void
>
();
}
void
Test()
{
FuncE
<
int
>
();
//
泛化版本
FuncE
<
void
>
();
//
特化版本
FuncE();
//
重载版本
}
FuncE函数没有参数,可以特化或者重载,但如果它还有其他模板参数的话,由于函数模板不支持部分特化,就只能使用重载模板函数了。
发现这种方式后,为我省了很多事,原来为了识别一个模板参数是否为void,我模拟stl 搞了个 templeate <typename T> Return_Type_Trait {},然后利用类模板的特化来专门定义一些类型,以到达识别返回类型的目的。现在看来,都是多余的。可以使用这个特性来实现。
posted on 2009-07-08 11:54
李阳
阅读(9307)
评论(0)
编辑
收藏
引用
所属分类:
C++
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
关于C++中的临时对象问题
剖析Windows消息处理机制
关于 return void()
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2010年2月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(7)
给我留言
查看公开留言
查看私人留言
随笔分类
C++(3)
Linux
LUA
游戏开发
随笔档案
2011年8月 (1)
2010年2月 (1)
2010年1月 (1)
2009年7月 (1)
文章分类
C++(42)
IT人生(3)
Linux(15)
LUA(2)
创业杂谈(1)
经典收藏(1)
人工智能
算法(2)
图形图像(6)
网络编程(2)
游戏开发(6)
文章档案
2012年2月 (5)
2011年1月 (6)
2010年12月 (3)
2010年7月 (1)
2010年6月 (1)
2010年5月 (3)
2010年4月 (12)
2010年3月 (7)
2010年1月 (2)
2009年12月 (3)
2009年10月 (5)
2009年9月 (1)
2009年8月 (1)
2009年7月 (4)
2009年6月 (5)
2009年5月 (7)
2009年4月 (9)
2009年3月 (16)
2008年6月 (1)
2008年5月 (8)
2008年4月 (3)
2008年3月 (3)
2008年2月 (3)
2008年1月 (1)
2007年12月 (4)
2007年11月 (3)
链接
CodeGuru
CodeProject
sqlite中文站
VIM -帮助
Vim中文使用手册
面向 Linux 程序员和系统管理员的技术资源
云风的 BLOG
友情链接
Azure
Creator_Chen's dream island
icoder的博客
牵着老婆满街逛
搜索
最新评论
1. re: Linux下Gcc生成和使用静态库和动态库详解(转)
评论内容较长,点击标题查看
--hdp
2. re: QueryPerformanceFrequency用法
评论内容较长,点击标题查看
--chenyangming
3. re: g++ 编译和链接
评论内容较长,点击标题查看
--李然
4. re: 剖析Windows消息处理机制
评论内容较长,点击标题查看
--小旭
5. re: "当前不会命中断点。源代码与原始版本不同"解决方法[未登录]
非常感谢
--blue
阅读排行榜
1. 剖析Windows消息处理机制(11707)
2. 关于 return void()(9307)
3. 对C++ Local的经典分析(转)(6640)
4. 关于C++中的临时对象问题(4695)
评论排行榜
1. 关于C++中的临时对象问题(6)
2. 对C++ Local的经典分析(转)(2)
3. 剖析Windows消息处理机制(2)
4. 关于 return void()(0)