Andrey Semashev wrote:
Pulling type traits to Core doesn't sound good, it's better to create a separate submodule for it.
I think that you misunderstand. I do not intend to put type traits in Core. The is_pointer definition in the example is part of the test for bool_. It demonstrates that bool_ can dispatch without it being coupled to the definition of the trait - which can come from core_type_traits, from std, or from a user specialization.
It's still a partial solution...
When you say that it is a partial solution, what problem do you have in mind it is a partial solution for?
... since
f(is_pointer< int >::type());
is also valid with the current implementation.
Well, so is is_pointer<int>::value_type x = is_pointer<int>::type::type(); but I'm not sure what is the practical impact of these examples.