namespace boost
{
template <class T, class U>
char (& is_op_test(boost::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
: boost::mpl::bool_<(sizeof(is_op_test(make<T>())) == 2)>
{};
}
and this function declaration.
template <typename T,
template <typename ELEM, typename = std::allocator<ELEM> >
class CONT
>
typename boost::enable_if<boost::mpl::or_<boost::is_integral<T>, boost::
is_operators<T> >, CONT<T> >::type
primelist(const T& MAX_BOUND, const T& K, boost::function<bool(const T&, const T&)> f);
BigInteger class declaration looks like this..
class BigInteger : public BigUnsigned, boost::operators<BigInteger>,
boost::operators<BigInteger, int>
{
};
I compile with T = int and it works.
When i compile with T = BigInteger I get the following errors.
on visual c++.
error C2770: invalid explicit template argument(s) for 'boost::enable_if<boost::mpl::or_<boost::is_integral<T>,boost::is_operators<T>
>,CONT<T>>::type primelist(const T &,const T
&,boost::function<bool(const T &,const T &)>)'
./cs512/c++/primeMain.cpp(24) : see declaration of 'primelist'"
on mingw dev-cpp i get this error.
unable to find function....
In both cases passing BigInteger does not work.
thanks for the help.
BigInteger does derive from boost::operators and theirs two overload.