#include void f( ...) { } struct udt { static const bool value = true; operator bool() { return value; } }; struct derived : udt {}; int main(void) { f( udt()); f( derived()); f( boost::integral_constant()); return 0; }