diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 96628b9d355ec99f5a7889d9f59c6f3e1e0778eb..9aa519c03e458e136219b24efcdfa82ecabc09e4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-04  Paolo Carlini  <pcarlini@suse.de>
+
+	* include/bits/valarray_array.h (__valarray_default_construct(_Tp*,
+	_Tp*)): Use __is_scalar instead of __is_pod.
+
 2007-04-03  Paolo Carlini  <pcarlini@suse.de>
 
 	* include/bits/stl_algobase.h (__copy_aux(_II, _II, _OI),
diff --git a/libstdc++-v3/include/bits/valarray_array.h b/libstdc++-v3/include/bits/valarray_array.h
index 12a6b5fd4190757393b19b3a851f5e49dc513113..84f9a749067ae733ec6a2d4e0f523cb01749412f 100644
--- a/libstdc++-v3/include/bits/valarray_array.h
+++ b/libstdc++-v3/include/bits/valarray_array.h
@@ -98,7 +98,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     inline void
     __valarray_default_construct(_Tp* __restrict__ __b, _Tp* __restrict__ __e)
     {
-      _Array_default_ctor<_Tp, __is_pod(_Tp)>::_S_do_it(__b, __e);
+      _Array_default_ctor<_Tp, __is_scalar<_Tp>::__value>::_S_do_it(__b, __e);
     }
 
   // Turn a raw-memory into an array of _Tp filled with __t