
AMDG On 06/27/2012 08:48 AM, Larry Evans wrote:
On 06/26/12 14:18, Steven Watanabe wrote:
Anyway, I can compile the following just fine with MSVC 10.
int i = 0; call(binding<incrementable<int> >(mpl::map0<>()), incrementable<int>(), i); // i = 1
But, AFAICT, that call doesn't have a concept as the 1st arg. To make the above call like the ones in my attached file, this would have to be:
call(incrementable<int>(), i);
The attached has that, and when it's compiled, it produces errors similar to the one previously mentioned here:
http://article.gmane.org/gmane.comp.lib.boost.devel/232109
more specifically, the errors include:
../../../boost/type_erasure/detail/get_signature.hpp:23:5: error: incomplete type 'void' used in nested name specifier BOOST_TYPEOF_NESTED_TYPEDEF_TPL(nested, &Concept::apply) ^
However, now I realize that's probably because there's no any in the argument list, a flaw you mention in the a) problem below. So, I'm inferring from your call example, which includes the binding<...>(...) arg, that somehow an any arg provides something like a binding?
It would help me if more documentation on the args to call were supplied.
I agree. Here's the requirements in unedited form: - The binding argument determines the dispatching. - The concept argument must be present in the binding. - If a binding is not specified it will be deduced from the arguments. At least one of the arguments must be an any. - Whether an argument is treated as an any is determined by the signature of the concept. Arguments that are placeholders are involved in the dispatching. An argument that is an /any/ in the signature of the concept gets no special handling.
Initially, I had thought call just used the 1st arg(the concept) for it's type, and then just called that type's static apply with the remaining args after, maybe, substituting the placeholders with ... Hmm... now I'm not sure what I was thinking, but what's becoming clearer to me is I need some more clarification on how call works because I'm not having much success in using it so far :(
In Christ, Steven Watanabe