Terje Slettebų <[EMAIL PROTECTED]> writes: >>From: "David Abrahams" <[EMAIL PROTECTED]> > >> "Jaap Suter" <[EMAIL PROTECTED]> writes: >> >> > Mm, I still don't quite understand. Consider the following function: >> > >> > void foo( int_c< 0 > ); >> > >> > Shouldn't the following code: >> > >> > foo( int_c< minus< int_c< 4 >, int_c< 4 > >::type > ); >> > >> > Behave the same as this: >> > >> > foo( minus< int_c< 4 >, int_c< 4 > >::type ); >> >> We'd like it to. However, as Aleksey said, until we get typedef >> templates, there's no way to make int_c<0> into the same type as >> integral_c<int,0>. The result of >> >> minus< int_c< 4 >, int_c< 4 > >::type >> is >> integral_c<int,0> > > You could get the above code to compile, if they were related by > inheritance, and you use "void foo( integral_c<0> )", instead. For example: > > template<int N> > struct int_c : integral_c<int, N> {};
or template <class T, T N> struct integral_c : select_int_base<T,N>::type {}; To let Jaap keep using his convenient int_c arguments -- David Abrahams [EMAIL PROTECTED] * http://www.boost-consulting.com Boost support, enhancements, training, and commercial distribution _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost