Wo ist disable_if in C ++ 0x?
Frage
-Boost hat sowohl enable_if
und disable_if
, aber C ++ 0x scheint letzteres zu fehlen. Warum war es ausgelassen? Gibt es Meta-Programmierung Einrichtungen in C ++ 0x, die mich zu bauen disable_if
in Bezug auf enable_if
erlauben?
Oh, ich habe gerade bemerkt, dass std::enable_if
ist im Grunde boost::enable_if_c
, und dass es nicht so etwas wie boost::enable_if
in C ++ 0x.
Lösung
Auf der Gefahr scheinbar dumm, tut nur !expression
statt expression
in den bool Template-Parametern in enable_if
, um es wie ein disable_if
verhalten? Natürlich, wenn diese Idee funktioniert, könnten Sie einfach auf diesen erweitern eine Klasse mit disable_if
artigem Verhalten zu schreiben?
Ok, ich glaube, Sie disable_if
wie folgt implementieren könnte:
template <bool B, typename T = void>
struct disable_if {
typedef T type;
};
template <typename T>
struct disable_if<true,T> {
};