k lets say i have the following snippet of code

typedef boost::operators<T> operatorsT;

template <class T>
void myFunc(const T&)
{
  typedef boost::operators<T> operatorT;
   BOOST_STATIC_ASSERT((is_base_of<operatorT, T>::value));
  // bunch of code after...
}

on my compiler it generates this error.

:/boost_msvc/include\boost/operators.hpp(283) : error C2803: 'operator --' must have at least one formal parameter of class type
C:/boost_msvc/include\boost/operators.hpp(268) : see reference to class template instantiation 'boost::decrementable<T,B>' being compiled
        with
        [
            T=int,
            B=boost::detail::empty_base<int>
        ]

C:/boost_msvc/include\boost/operators.hpp(284) : error C2146: syntax error : missing ';' before identifier 'nrv'
C:/boost_msvc/include\boost/operators.hpp(284) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:/boost_msvc/include\boost/operators.hpp(284) : error C2061: syntax error : identifier 'x'
C:/boost_msvc/include\boost/operators.hpp(284) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:/boost_msvc/include\boost/operators.hpp(284) : fatal error C1903: unable to recover from previous error(s); stopping compilation