Boost logo

Boost Users :

From: chun ping wang (cablepuff_at_[hidden])
Date: 2007-10-04 16:22:41


hey i got everything to work.. i realize after reading the doc return_type
is the type you want to return....

On 10/3/07, chun ping wang <cablepuff_at_[hidden]> wrote:
>
> the error was a missing semicolon after declaration of the array.
>
> typename boost::enable_if<boost::mpl::or_<boost::is_arithmetic<T>,
> boost::is_operators<T> >, return_type>::type // line 44.
>
> ./cs512/c++/cppdef/BitOperation.cpp:44: error: 'return_type' was not
> declared in
> this scope
> ./cs512/c++/cppdef/BitOperation.cpp:44: error: template argument 2 is
> invalid
> ./cs512/c++/cppdef/BitOperation.cpp:45: error: expected initializer before
> 'Log2
> '
>
> On 10/3/07, chun ping wang <cablepuff_at_[hidden]> wrote:
> >
> > hmm doesn't work.
> > g++.exe -Wall -D__DEBUG__ -c ./cs512/c++/cppdef/BitOperation.cpp -o
> > ./lib/BitOp
> > eration.o -I"C:/Boost/include" -I"./bigint/c++" -fexceptions
> > -fverbose-asm -f
> > expensive-optimizations -O3 -pg -g3
> > ./cs512/c++/cppdef/../MyOperators.hpp:22: error: expected initializer
> > before 'te
> > mplate'
> > ./cs512/c++/cppdef/BitOperation.cpp:44: error: 'return_type' was not
> > declared in
> > this scope
> > ./cs512/c++/cppdef/BitOperation.cpp:44: error: template argument 2 is
> > invalid
> > ./cs512/c++/cppdef/BitOperation.cpp:45: error: expected initializer
> > before 'Log2
> > '
> > ./cs512/c++/cppdef/BitOperation.cpp:151: error: 'return_type' was not
> > declared i
> > n this scope
> > ./cs512/c++/cppdef/BitOperation.cpp:151: error: template argument 2 is
> > invalid
> > ./cs512/c++/cppdef/BitOperation.cpp:152: error: expected initializer
> > before 'boo
> > st'
> >
> >
> > heres the code ..
> > typename boost::enable_if<boost::mpl::or_<boost::is_arithmetic<T>,
> > boost::is_operators<T> >, return_type>::type // BitOperation.cpp line
> > 44.
> >
> > namespace boost
> > {
> > // line 18 of MyOperators.hpp
> > template <class T, class U>
> > char (& is_op_test(boost::operators<T,U> const&) )[2]
> >
> > template <class T>
> > char is_op_test(T const&);
> > // line 24 of MyOperators.hpp
> > }
> >
> > I pass T as an int which should pass the first test.
> >
> > On 10/1/07, David Abrahams <dave_at_[hidden]> wrote:
> > >
> > >
> > > on Mon Oct 01 2007, "chun ping wang" <cablepuff-AT-gmail.com> wrote:
> > >
> > > > hmm that is what i want for now... (i might change it later). I want
> > > to know to keept it in back
> > > > of my head. Thanks.
> > > >
> > > > On 10/1/07, David Abrahams < dave_at_[hidden]> wrote:
> > > >
> > > > on Wed Sep 26 2007, "chun ping wang" < cablepuff-AT-gmail.com >
> > > wrote:
> > > >
> > > > > what i want to do is if type "T" happens to be a integeral
> > > type or a class type that
> > > > inherits
> > > > > from boost::operators than let the function compile otherwise
> > > a
> > > > > compile time error appears.
> > > >
> > > > I could tell you how, but it seems ill-advised. I really doubt
> > > you
> > > > want to fail compilation if someone passes you a class type that
> > > acts
> > > > just like int, but that isn't written using
> > > boost::operators. Are you
> > > > sure that's what you want?
> > >
> > > // untested
> > > template <class T, class U>
> > > char (& is_op_test(operators<T,U> const&) )[2]
> > >
> > > template <class T>
> > > char is_op_test(T const&);
> > >
> > > template<class T>
> > > T const& make();
> > >
> > > template <class T>
> > > struct is_operators
> > > : mpl::bool_<(sizeof(is_op_test(make<T>())) == 2)>
> > > {};
> > >
> > > template <class T>
> > > typename enable_if<mpl::or_<boost::is_integral<T>, is_operators<T> >,
> > > return_type>::type
> > > f(T x)
> > > {
> > > ...
> > > }
> > >
> > > --
> > > Dave Abrahams
> > > Boost Consulting
> > > http://www.boost-consulting.com
> > >
> > > _______________________________________________
> > > 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