John Maddock wrote:
But my broader point was that this generates two separate traits called is_pod (for example), with slightly different interfaces and conceptual requirements on usage. IMO this is a "really bad thing" and we can do much better.
Well yes, it does, and this is kind of the point, isn't it? I already explained why I want the core type traits to have a minimal interface: so that one can specialize or implement a core type trait without having to include any type traits header, core or otherwise. You define ::value and that's it, you have a bona fide trait. Others obviously don't like this interface, they want something "better". But anything better makes it worse for my purposes, so the improved version is of no use to me. So we'll be going to be stuck with two interfaces, and the best we can do is implement the richer interface in terms of the spartan one, so that specializations of the lower layer are automatically reflected in the higher one.