
Dave Abrahams wrote:
Steven Watanabe wrote:
I'd like to request a formal review of the TypeErasure library that I've posted about several times before here. The TypeErasure library is a generalization of boost::any and boost::function. It allows easy composition of arbitrary type erased operators.
It seems the library is a little more than that. Have you considered naming it Boost.DuckTyping? I think TypeErasure doesn't really capture the full scope of what you've done.
IMO DuckTyping is an ill-defined term that is sometimes used to hide a multitude of sins.
Yes, after making that post I thought about it a little more and decided I don't know how to define duck typing, but I know it when I see it. If it walks like a duck and it talks like a duck, then it's a duck. Until it doesn't talk like a duck, then it's a run time error. That's not a language feature we want, and it's not what the library implements. Primarily it seems the library is adding a layer of type checking on top of type erasure. Boost.Any does type erasure. This library does more. I'd like the combination of static polymorphism and type erasure to have a name. ConceptAny, DynamicConcepts, AnnonymousConcepts, TypeSafeAny. Regards, Luke