23 May
2009
23 May
'09
5:19 a.m.
Suppose I have a template function template<typename T> void f(const std::string&, T); which I want there to be a couple of different variants of. Version 1 - Enabled if and only if boost::is_same<T, bool> Version 2 - Enabled if and only if boost::is_same<T, foo> (foo is a class) Version 3 - Enabled if and only if boost::is_enum<T> Version 4 - Otherwise Is there an easy way to express this? It seems I run into a bunch of overload ambiguity problems. I'm sure I can get around this by adding to every version the negation of all the other conditions, but this seems unnecessarily complicated.