
2009/12/15 Edward Diener <eldiener@tropicsoft.com>
I could not find this in type_traits, or any other Boost TMP library, but I am wondering if there is any TMP technique which can determine if a user-defined type supports a particular operator overload for that type ?
Type Traits Extensions might help. It's not officially part of Boost, but it's in the review queue. -------------------------- :Author: Frédéric Bron :Review Manager: Needed :Download: https://svn.boost.org/trac/boost/browser/sandbox/type_traits :Description: The purpose of the addition is to add type traits to detect if types T and U are comparable in the sens of <, <=, >, >=, == or != operators, i.e. if t<u has a sens when t is of type T and u of type U (same for <=, >, >=, ==, !=). The following traits are added: is_equal_to_comparable<T,U> is_greater_comparable<T,U> is_greater_equal_comparable<T,U> is_less_comparable<T,U> is_less_equal_comparable<T,U> is_not_equal_to_comparable<T,U> The names are based on the corresponding names of the standard template library (<functional> header, section 20.3.3 of the standard). The code has the following properties: * returns true if t<u is meaningful and returns a value convertible to bool * returns false if t<u is meaningless. * fails with compile time error if t<u is meaningful and returns void (a possibility to avoid compile time error would be to return true with an operator, trick but this has little sens as returning false would be better) Roman Perepelitsa.