Boost logo

Boost Users :

From: chun ping wang (cablepuff_at_[hidden])
Date: 2007-10-03 22:37:06


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