假设我有一个库和多个依赖于该库的项目。库头文件已经有一些部分类特化。我想允许每个依赖项目用自己的部分专业化覆盖。出于性能原因,我需要静态地实现这一切。下面是一些简化的代码。
库代码:
template <class A, class B, class Enable=void>
struct Widget;
struct Foo
{
};
template <class B>
struct Widget<Foo, B>
{
};
用户代码:
template <class B>
struct DoSpecialize;
template <class B>
struct Widget<Foo, B, enable_if< DoSpecialize<B> >::type
{
};
这里的问题是我们最终会得到同一专业化的多个定义。我想我们需要一个disable_if<>
地方。我们怎样才能避免这种情况?