
Please don't top post ... reordered.
VC6 is pretty strange, I agree. In particular, it doesn't handle functions with non-type template parameters well. The following code should demonstrate the problem. (Hopefully I'm remembering the problem correctly -- I don't have VC6 installed on this machine.)
template<int I> void foo() { std::cout << I << '\n'; }
int main() { foo<1>(); foo<2>(); return 0; }
If you must use VC6, avoid non-type template parameters for function templates.
Sliwa, Przemyslaw (London) wrote:
This returns in both cases the same value. Is there a way around this problem at all?
Thanks
Pshemek
Try using integer wrappers. The MPL ones should do the trick: template<typename Int> void foo() { std::cout << Int::value << '\n'; } int main() { foo<mpl::int_<1> >(); foo<mpl::int_<2> >(); return 0; } The original problem was using bools as a non-type template parameter, so the fix would be to use mpl::true_ and mpl::false_. -- Eric Niebler Boost Consulting www.boost-consulting.com