在我写的构造函数模板中,我希望在类模板的接口上有一个静态断言。情况基本(非编译)示例如下:类模板接口的静态断言
class Baz
{
}
template<typename T>
class Bar: public Baz
{
}
template<typename T>
class Qux: public Baz
{
}
class Foo
{
template<typename T>
Foo(T typePar , Baz& baz)
{
// here I would like to assert that Baz is an interface to a class
specialized on T
}
}
我最好的猜测是一个函数来巴兹的增加,但因为这不能作为模板,我不会现在我怎么能调用,在编译时间。
你的意思是你想在编译时检查'Baz'实际上是对'Bar'或'Qux '的引用吗?这是不能做到的,因为动态类型的'baz'在运行时可能是不同的东西。 –
TartanLlama
您可以将'Baz&'更改为模板参数,然后执行检查,但是您无法将'Baz'传递给您的构造函数,您需要首先进行投射。 – TartanLlama
我明白你的意思了。将它改为模板参数对我来说不是一个真正的选择。于是我只想放弃这个静态断言 – laurisvr