would a single mega template lib of traits bullshit be more wildly more compile time and usable efficient then phoboes isBlahBlahBlah?
when a isBidirectionalRange || isRandomAccess range is called, it probaly has to either a) abstract out a isRange to memoize(adding more template nesting or b) redetect if its a range twice breaking memoization
Explain!T could contain all the infomation and then that tpye could a) print everything it detects b)add normal ctfe functions for common usecases
when you call a T.to!S, how much of std.traits gets called, processed in a big indirect mess? How many calls of isStruct is called before calling a "getStruct___" because if you call it on int it dies?
When ive implimented my traits I find isNullable and isRange need to detect each other because phoboes in its wisdom made nullable a very very strange range so onto the pile of complexity it goes; if it was imperative, short curiting of static if had 50/50 odds to remove it entirely preemptively
Suppose instead you call explain!T once for a single to
function maybe you threw it out to a toImpl!(int,float) but all the matching was standard code with a bunch of static ifs instead of navigating the mess of headers
etc.
anyone tried that?