社区
工具平台和程序库
帖子详情
如何在类型推导中判断一个类是另一个类的子类?
wingfiring
2003-11-18 12:03:55
对于一个template,希望能够为某个类及其子类做特化。
怎么实现这样一个编译期的类型推导?
...全文
229
10
打赏
收藏
如何在类型推导中判断一个类是另一个类的子类?
对于一个template,希望能够为某个类及其子类做特化。 怎么实现这样一个编译期的类型推导?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
noirchloe
2003-11-18
打赏
举报
回复
说错了,C++设计新思维。。。。。。真丢人,哈哈
上面还可以使用std::type_info
noirchloe
2003-11-18
打赏
举报
回复
是《C++编程新思维》吧?
noirchloe
2003-11-18
打赏
举报
回复
sizeof()
dynamic_cast
合用
先比大小,然后创建指针,看是否能成功转换
wingfiring
2003-11-18
打赏
举报
回复
typedef int MyTYPE;
这是一个侵入型的设计,能不能有一个非侵入型的设计?
hpho
2003-11-18
打赏
举报
回复
<MEC> item 4
template<typename D, typename B>
class IsDerivedFrom1
{
class No{};
class Yes{No no[2];};
static Yes Test(B*);
static No Test(...);
public:
enum{Is=sizeof(Test(static_cast<D*>(0)))==sizeof(Yes)};
};
template<typename D, typename B>
class IsDerivedFrom2
{
static void Constraints(D* p)
{
B* pb = p;
pb = p;
}
protected:
IsDerivedFrom2(){void(*p)(D*)=Constraints;}
};
yjh1982
2003-11-18
打赏
举报
回复
<<C++泛型新思维>>
noirchloe
2003-11-18
打赏
举报
回复
sizeof()
Wolf0403
2003-11-18
打赏
举报
回复
如果要求是:对某个类为根的继承树上的所有类进行同样的一个特化,我有如下解决办法:用一个特定的鉴定参数。
示例代码:
class Base
{
public:
typedef int MyTYPE;
virtual void function() = 0 { cout << "Base" << endl;}
~Base(){cout << "~Base" <<endl;}
};
class D1 : public Base
{
public:
void function() { cout << "D1" << endl;}
virtual ~D1(){cout << "~D1" <<endl;}
};
template <class _Ty, typename _Id_Type = void>
struct S
{
void f()
{
cout << "Normal" << endl;
}
};
template <class _Ty>
struct S <_Ty, typename _Ty::MyTYPE>
{ // 如果对 _Ty::MyTYPE 用不同类型区分,可以对不同的继承树进行分别特化
void f()
{
cout << "Base" << endl;
}
};
int main(void)
{
S<int> s;
s.f();
S<Base, Base::MyTYPE> base;
base.f();
S<D1, D1::MyTYPE> d;
d.f();
}
yjh1982
2003-11-18
打赏
举报
回复
C++设计新思维有嘛
wingfiring
2003-11-18
打赏
举报
回复
dynamic_cast是运行期的类型识别,不是编译期的。
我想实现的是编译期的。
【C++11】
类
型
推导
本文详细介绍了C++11/14/17
中
的模板
类
型
推导
、`auto`关键字以及`decltype`的使用。通过多个示例解析了在不同场景下如何
推导
类
型
,并展示了如何查看
类
型
推导
结果。此外,还探讨了`auto`在统一初始化时的特殊行为以及`decltype(auto)`在C++14
中
的应用。
16、
类
型
系统与
子
类
型
本文深入探讨
类
型
系统与
子
类
型,介绍了静态和动态
类
型
系统的特点,重点阐述静态
类
型
检查,包括
类
型
推导
、兼容性验证等。还讲解
子
类
型概念、多态性实现,以及
类
型
层次结构、协变与逆变等高级特性。最后通过Java和Haskell案例分析不同
类
型
系统的设计决策及影响。
再议
类
型
推导
本文探讨了
类
型
推导
在动态语言
中
的应用与优化技巧,通过具体案例解析如何减少不必要的计算,提升程序执行效率。
Scala Cats - Type Class
类
型
类
本文参考cats官网文档,介绍了函数式编程
中
类
型
类
实现特设多态的方法。通过整型列表求和等例子展示
类
型
类
应用,对比
类
型
类
与
子
类
型实现多态的差异,还提及隐式
推导
、语法糖、
类
型
类
规则,以及Cats
中
类
型
类
情况和未完成实例。
仓颉
类
型
推导
机制与规则深度解析
本文系统解析仓颉语言的
类
型
推导
机制,涵盖局部变量、函数返回值、泛型和闭包的
推导
规则,基于Hindley-Milner系统并引入双向
类
型
检查。文章还讨论
子
类
型关系下的
推导
行为、最佳实践及对编译性能的影响,强调在保障
类
型
安全的同时提升代码简洁性与可读性。
工具平台和程序库
24,851
社区成员
27,330
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章