
1. parameter type enforcing
Check. You provide a simpler and less-capable interface. Of course it would be easy to add a simple and less-capable interface on top of our general one.
Could you please ground you statement about "less-capable". With specific examples. If you mean something amoung the lines "is_movable" check. Look at my responce here: http://lists.boost.org/MailArchives/boost/msg75147.php
2. default value support
Details, please? Please show the differences (I've clearly lost track of this thread).
3. option parameter support
template<typename Params> void foo( Params const& p ) { you interface int ind = p[index | 0 ]; my interface int ind = p.has(index) ? p[index] : 0; } optional actually. Sorry
Details, please?
From other thread:
void foo_impl( int i1, int i2 ) {...} void foo_impl( int i1 ) {...}
template<typename Params> void foo( Params const& p ) { if( p.has(i2) ) foo_impl( p[i1], p[i2] ); else foo_impl( p[i1] ); }
4. Unlimited number of parameters support
If I understand what you're saying, no you don't.
Why? I could have as many parameters to function as I want since I do not try to combine under the hood of single keywords structure.
Don't forget, we have the overloaded comma operator.
Don't you still need to use keywords structure? Doesn't it has limited arity? If you don't, which features wouldn't be accessible (without keywords structure)?
If I don't understand what you're saying: details, please?
-- Dave Abrahams
Regards, Gennadiy