
On Sun, Dec 6, 2009 at 3:19 AM, joel falcou <joel.falcou@lri.fr> wrote:
Zachary Turner wrote:
The sizeof trick I'm aware of is comparing the size against an "unlikely" size N, something very large such as 43280 such that you're unlikely to come across two types P and Q such that sizeof(P()+Q()) == N. Is there any reason this method is preferable to the method I used above though, where it can provably never result in a false negative?
You get it wrong, that's not what we call the sizeof trick.
Here is an example for checking for operator+:
#include <boost/type_traits/remove_cv.hpp> #include <boost/static_assert.hpp>
namespace detail { struct tag {};
struct any { template <class T> any(T const&); };
tag operator+(any const&, any const&);
tag operator,(tag,int);
Wow, overloaded operator comma. I don't know whether to laugh or cry. In any case, thanks for the code snippet :) Zach