4 ms·
I wish there were tools to auto generate documentation on what interface a duck-typed consumer expects, e.g. what std::vector<T> expects of T.
by jonathanyc 9y ago
I wish there were tools to auto generate documentation on what interface a duck-typed consumer expects, e.g. what std::vector<T> expects of T.
- stochastic_monk 9y agoWell, C++17 concepts enforce requirements, but hopefully metaclasses will do more in 20.
- bstamour 9y agoConcepts are also C++20. They were voted in, however, shortly after 17 shipped.
- stochastic_monk 9y agoGood point. I was thinking of the rudimentary, template-based use of concepts, not the polished, C++20 version.
- bstamour 9y agoAh gotcha. Yes in the current situation we can do nearly everything that the concepts proposal for C++20 does with enable_if, void_t, and a few other helpers. Though concepts have the benefit of letting you "say what you mean", instead of relying on template magic.
- orf 9y agoThis should be more than possible with Pythons type annotations, when done right. I.e 'iterable[str]' can accept a generator, list, tuple, any class with the right __iter__ and of course a string itself.
- wirrbel 9y agoThis is what I like about Rust and Rust's traits. You write a generic and specify the properties of the generic type parameter, for example that it must implement another trait or something.