Boost logo

Boost Users :

Subject: Re: [Boost-users] [type_traits] deduce argument type of member function with function_traits
From: niXman (i.nixman_at_[hidden])
Date: 2011-09-03 04:41:41


May be:
http://www.boost.org/doc/libs/1_47_0/libs/function_types/doc/html/boost_functiontypes/reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types

?

2011/9/3 alfC <alfredo.correa_at_[hidden]>

> Is function_traits the right way to extract the argument type of a member
> function?
>
> In the following example I want to make the last line work. This will be
> part of larger question, on how to deduce the argument type of operator()
> for function objects in which operator() is not overloaded.
>
> #include <typeinfo>
> #include <iostream>
> #include <boost/type_traits/function_traits.hpp>
> #include <boost/type_traits/remove_pointer.hpp>
>
> using namespace std;
>
> double dsquare(double l){ return l*l; }
> int isquare(int l){ return l*l; }
>
> struct csquare_impl{
> int do(char c) const{
> return 'c';
> }
> };
> csquare_impl csquare;
>
> template<class F>
> void test(F f){
> typename boost::function_traits<typename
> boost::remove_pointer<F>::type>::arg1_type test_var;
> cout << typeid(test_var).name() << endl;
> }
>
> int main(){
> test(dsquare); // ok, prints "d"(double)
> test(isquare); // ok, prints "i"(int)
> test(csquare_impl::do); // not ok, want to print "c"(char)
> return 0;
> }
>
> Thanks,
> Alfredo
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net