SFINAE和type_traits更多地时候是让库更不容易误用,接近白名单的做法。感觉不是为了提供更好的抽象...
你的类想和iterator兼容,ok,请自己举手,定义这些个member type
不这样的做法:
一是不用template而是用interface:application一般这样做,反正application一般不是hotpath
二是不施加这个type traits定义,对不对随缘。好一点的留下一个文档说vector<bool>和普通的vector<XXX>不一样,不好的就变成一个undocumented feature, 或者StackOverflow上一个高分问答...
一句话就是非library少用
【 在 allegro 的大作中提到: 】
: C++现在的复杂度不能忍了.正确的抽象会让语言规则变得简单.
: 现在的SFINAE啊type_traits啊真的是正确的抽象吗?
: C++要么新出来个大佬简化挽救这一切.
: ...................
--
FROM 75.31.75.*