【发布时间】:2015-09-26 19:35:49
【问题描述】:
我尝试将此代码(c# 代码)转换为 c++ 代码
public abstract class IGID<T>
where T : IGID<T>
如何在 c++ 中实现这样的模板条件?
【问题讨论】:
-
它在 C# 中的作用是什么?
-
我不认为你可以
-
C++ 中没有这样的东西,C++ 中也没有需要这样的东西。 C# 泛型在运行时被具体化,而 C++ 模板在编译时被实例化。因此,如果不满足约束,代码将无法编译。我想你可以使用
static_assert,但如果你真的想要它。 -
我的 C# 生锈了,但是这段代码真的需要 T 是 / 继承自
IGID<T>吗?所以一个有效的对象需要类型IGID<A> == IGID<IGID<B>> == IGID<IGID<IGID<C>>>等等......无限级别。 -
无论解决方案涉及某种形式的
static_assert,现在该断言需要包含什么,我不确定。