Simple is beautifull

还需要副标题吗?

导航

<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(2)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜

类型选择

// test7.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

using namespace std;
using namespace boost;

namespace
{
 template<typename T> char checkSize(T*);
 template<typename T> long checkSize(...);
}

template<typename FIRST, typename SECOND>
struct SameType
{
 enum{value = sizeof(char) == sizeof(checkSize<FIRST>((SECOND*)0)) };
};


class IFoo
{
public:
 virtual void bar() = 0;
};

class Foo: public IFoo
{
public:
 virtual void bar(){ cout<<"bar()"<<endl; };
};

template<int>
class TypeSelect
{
public:
 template<typename T>
  TypeSelect(T& r){}
};

template<> class TypeSelect<true>
{
public:
 template<typename T>
  TypeSelect(T& r)
 {
  r.bar();
 } 
};

template<class T> void func( T& t )
{
 (TypeSelect<SameType<IFoo, T>::value>(t));          
}

int main()
{
 Foo x;
 int y;
 func(x);
 func(y);
}

posted on 2006-02-12 11:27 音乐虫子 阅读(380) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理