Index: libstdc++-v3/include/parallel/base.h =================================================================== --- libstdc++-v3/include/parallel/base.h (revision 137115) +++ libstdc++-v3/include/parallel/base.h (working copy) @@ -287,7 +287,13 @@ struct less<_Tp, _Tp> : public std::bina template struct plus : public std::binary_function<_Tp1, _Tp2, _Tp1> { - typedef typeof(*static_cast<_Tp1*>(NULL) + typedef +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + decltype +#else + typeof +#endif + (*static_cast<_Tp1*>(NULL) + *static_cast<_Tp2*>(NULL)) result; result @@ -299,7 +305,13 @@ template template struct plus<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp> { - typedef typeof(*static_cast<_Tp*>(NULL) + typedef +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + decltype +#else + typeof +#endif + (*static_cast<_Tp*>(NULL) + *static_cast<_Tp*>(NULL)) result; result @@ -312,7 +324,13 @@ template template struct multiplies : public std::binary_function<_Tp1, _Tp2, _Tp1> { - typedef typeof(*static_cast<_Tp1*>(NULL) + typedef +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + decltype +#else + typeof +#endif + (*static_cast<_Tp1*>(NULL) * *static_cast<_Tp2*>(NULL)) result; result @@ -324,7 +342,13 @@ template template struct multiplies<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp> { - typedef typeof(*static_cast<_Tp*>(NULL) + typedef +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + decltype +#else + typeof +#endif + (*static_cast<_Tp*>(NULL) * *static_cast<_Tp*>(NULL)) result; result