【发布时间】:2010-10-18 21:19:36
【问题描述】:
我想知道在 C++ 中是否有可能以某种方式处理以下情况:
情况1) (容易处理)
class BasicFacility { }
template <typename U1, typename U2> class Facility : public BasicFacility { }
现在假设我们想要一些编译时断言,并且我们想要检查任意类型 typename T 是否模拟了 Facility。这很简单:
(boost::is_base_of<BasicFacility, T>::type)
情况 2) (???)
现在让我们假设在同样的情况下,我们只有我们的模板类:
template <typename U1, typename U2> class Facility { }
显然我们不能使用与情况一相同的解决方案,因为我们不能写statement<Facility, T>(Facility 本身就是一个模板)。
那么,有没有办法(可能,脏,涉及丑陋的演员表,特定于对齐,任何可能有效的方法) 来检查一些 T 是否实际上等于一些 template type 而无需引入特定的空(辅助)基类(因为有时你根本不能)?
谢谢。
【问题讨论】:
标签: c++ templates typetraits