給定一個類,它有兩個策略模板參數: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