On 5 Mag, 15:09, "Roman.Perepeli...@[EMAIL PROTECTED]
"
<Roman.Perepeli...@[EMAIL PROTECTED]
> wrote:
> On 1 May, 21:43, mcostalba <mcosta...@[EMAIL PROTECTED]
> wrote:
>
> > I have to detect if a functor type Fun has a given signature Sig, i.e.
> > if Fun::operator() has a signature Sig
>
> Take a look at is_call_possible metafunction, which was discussed
> in this group before
> (http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/
> thread/4f7c7a96f9afbe44/e5fbc9305539f699#e5fbc9305539f699).
> It seems to do what you want.
>
Thanks Roman for your link.
Actually there are some good ideas in that implementation and I will
try to borrow a few of them...
Unfortunatly it does not fit the bill 100%, indeed:
- Implicit argument type conversion should be avoided in my context,
due to some ambiguites that can arise when there is more then one
candidate among the overload set. So signature matching would be ok to
be strict.
- It seems you have to add a specialization for each argument arity,
in my implementation I would try to avoid this. Indeed my proposed
implementation it's already ok at 95%, the only case for which it
fails is detecting pointers to CONST operator() members with a given
signature.
Anyhow, for interested people, many of the ideas, included overloading
comma operator
template <typename type, typename U>
U& operator,(U&, void_exp_result<type>);
to workaround void return types are also exposed in "Detecting the
Arity of Function Objects"
under the link
http://boost-sandbox.sourceforge.net/libs/proto/doc/html/boost_proto/appendices/implementation/function_arity.html
where an equivalent solution is do***ented by Eric Nibler in his
boost::proto library.
Thanks
Marco
--
[ See http://www.gotw.ca/resources/clcm.htm
for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]


|