I am using the portable style boost headers for tr1 implementation from Boost 1.42 such as #include <boost/tr1/type_traits.hpp>

When i use gcc implementation of tr1 (Mingw GCC 4.5.1 from TDM, BOOST_HAS_GCC_TR1 defined) everything works fine.
However when i select boost tr1 implementation (i.e not define the above macro) some stdlib functions such as std::abs gets
wrong overloaded selected. For. e.g. in gcc/tr1 std::abs((signed char)5) returns an int while in boost/tr1 it returns a double.

A compilable example is like
#include <cstdlib>
#include <iostream>
#include <typeinfo>
#include <boost/tr1/type_traits.hpp>
int main(){
    std::cout<<typeid(std::abs((short)5)).name();
    //prints i with gcc/tr1 while prints d with boost/tr1
}

it happens with type_traits header (may be few other also) but not with all  tr1 headers(such as array).

Thank you.
abir basak