Boost logo

Boost :

Subject: Re: [boost] Is there interest in a library for testing existence of a function member of class?
From: ºúά (huwei04_at_[hidden])
Date: 2014-11-22 10:33:17


Thanks, Sylvain to point to that. :)The use case is similar and a little different.Boost Concept Check will fail if not meet requirements.I would like a way to test it and return boolean.
For example, I would like do something like below:
struct default_foo{ void foo();};
struct user_foo{ void foo();};
template <typename T>void call_foo(typename if_<has_foo<void(T::*)()>::value, T, default_foo>::type u){ u.foo();}
Thanks,Wei

> Date: Sat, 22 Nov 2014 22:44:49 +0800
> From: sylvain.bougerel.devel_at_[hidden]
> To: boost_at_[hidden]
> Subject: Re: [boost] Is there interest in a library for testing existence of a function member of class?
>
> Hi Wei,
>
> Have you checked Boost Concept Check library, it looks like it could fit
> your use case.
>
> Regards, Sylvain
> On 22 Nov 2014 22:33, "ºúά" <huwei04_at_[hidden]> wrote:
>
> > Hi,
> > I am looking for how to test if a function member of class exist or not in
> > compile time.I did not find a solution by google so I wrote a piece of code
> > for it.Please let me know if it's already in boost. :)
> > Synopsis
> > class Bar
> > {
> > public:
> > Bar(int);
> > };
> >
> > class Foo
> > {
> > public:
> > Foo(int);
> > int foo(Bar);
> > };
> >
> > // create struct 'has_foo' which is used to test function member
> > 'foo'.HAS_FUNCTION_MEMBER(foo)
> >
> > int main()
> > {
> > assert((!has_foo<void(Bar::*)(Bar)>::value));
> > assert((has_foo<int(Foo::*)(Bar)>::value));
> > return 0;
> > }
> > The code is in my gisthttps://gist.github.com/wehu/1987f716074904d26cf0
> > The code only checks if the function is compatible with expected, but not
> > require to be exact same.
> > Thanks,Wei
> >
> >
> >
> > _______________________________________________
> > Unsubscribe & other changes:
> > http://lists.boost.org/mailman/listinfo.cgi/boost
> >
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
                                               


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk