给定一个类,它有两个策略模板参数:C++,我可以不允许特定的策略组合吗?
template<typename PolicyA, typename PolicyB>
class widget;
而下面可用的策略类A1,A2,A3,B1,B2,B3。如何传达1s和2s彼此兼容,但A3仅与B3兼容?也就是说,只有下面的实例被允许:
widget<A1, B1> w11; // All valid.
widget<A1, B2> w12;
widget<A2, B1> w21;
widget<A2, B2> w22;
widget<A3, B3> w33;
// No other combination allowed.
我在使用中的专业化的std :: enable_if失败的尝试遭到了一个编译错误:
template<typename A, typename B>
class<A3, enable_if<is_same<B, B3>::value, B3>::type>
{};
专业化的语法看起来不正确。 (会检查一个修复程序,但我附近没有C++ 11编译器) – Shiroko