summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/include/std/valarray
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2008-07-21 19:40:39 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2008-07-21 19:40:39 +0000
commitb23fdac1bed6b8eedb8615526bfe75e16f70488a (patch)
treeefdfd86136a070108ac69fda382332c5475473a6 /libstdc++-v3/include/std/valarray
parent08cc44e74d28ab49958b246b6d1f3ee827c21d24 (diff)
downloadppe42-gcc-b23fdac1bed6b8eedb8615526bfe75e16f70488a.tar.gz
ppe42-gcc-b23fdac1bed6b8eedb8615526bfe75e16f70488a.zip
Add initializer_list support as per N2679.
* include/debug/unordered_map: Add initializer_list support. * include/debug/safe_association.h: Likewise. * include/debug/unordered_set: Likewise. * include/debug/vector: Likewise. * include/debug/deque: Likewise. * include/debug/map.h: Likewise. * include/debug/set.h: Likewise. * include/debug/string: Likewise. * include/debug/list: Likewise. * include/debug/multimap.h: Likewise. * include/tr1_impl/unordered_map: Likewise. * include/tr1_impl/hashtable: Likewise. * include/tr1_impl/unordered_set: Likewise. * include/tr1_impl/regex: Likewise. * include/std/valarray: Likewise. * include/std/unordered_map: Likewise. * include/std/unordered_set: Likewise. * include/bits/stl_list.h: Likewise. * include/bits/stl_map.h: Likewise. * include/bits/stl_set.h: Likewise. * include/bits/basic_string.h: Likewise. * include/bits/basic_string.tcc: Likewise. * include/bits/stl_multimap.h: Likewise. * include/bits/stl_vector.h: Likewise. * include/bits/stl_deque.h: Likewise. * include/bits/stl_multiset.h: Likewise. * include/bits/stl_bvector.h: Likewise. * include/ext/vstring.h: Likewise. * include/ext/rc_string_base.h: Likewise. * include/ext/sso_string_base.h: Likewise. * src/Makefile.am (w?string-inst): Build with -std=gnu++0x. * src/Makefile.in: Likewise. * config/abi/pre/gnu.ver: Add new w?string exports. ... git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138043 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/std/valarray')
-rw-r--r--libstdc++-v3/include/std/valarray36
1 files changed, 36 insertions, 0 deletions
diff --git a/libstdc++-v3/include/std/valarray b/libstdc++-v3/include/std/valarray
index 31799c04cce..b0fa5124805 100644
--- a/libstdc++-v3/include/std/valarray
+++ b/libstdc++-v3/include/std/valarray
@@ -45,6 +45,7 @@
#include <cmath>
#include <algorithm>
#include <debug/debug.h>
+#include <initializer_list>
_GLIBCXX_BEGIN_NAMESPACE(std)
@@ -144,6 +145,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
/// Construct an array with the same size and values in @a ia.
valarray(const indirect_array<_Tp>&);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ /// Construct an array with an initializer_list of values.
+ valarray(initializer_list<_Tp>);
+#endif
+
template<class _Dom>
valarray(const _Expr<_Dom, _Tp>& __e);
@@ -209,6 +215,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
*/
valarray<_Tp>& operator=(const indirect_array<_Tp>&);
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ /**
+ * @brief Assign elements to an initializer_list.
+ *
+ * Assign elements of array to values in @a l. Results are undefined
+ * if @a l does not have the same size as this array.
+ *
+ * @param l initializer_list to get values from.
+ */
+ valarray& operator=(initializer_list<_Tp>);
+#endif
+
template<class _Dom> valarray<_Tp>&
operator= (const _Expr<_Dom, _Tp>&);
@@ -615,6 +633,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
(__ia._M_array, __ia._M_index, _Array<_Tp>(_M_data), _M_size);
}
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ template<typename _Tp>
+ inline
+ valarray<_Tp>::valarray(initializer_list<_Tp> __l)
+ : _M_size(__l.size()), _M_data(__valarray_get_storage<_Tp>(__l.size()))
+ { std::__valarray_copy_construct (__l.begin(), __l.end(), _M_data); }
+#endif
+
template<typename _Tp> template<class _Dom>
inline
valarray<_Tp>::valarray(const _Expr<_Dom, _Tp>& __e)
@@ -638,6 +664,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
return *this;
}
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+ template<typename _Tp>
+ inline valarray<_Tp>&
+ valarray<_Tp>::operator=(initializer_list<_Tp> __l)
+ {
+ _GLIBCXX_DEBUG_ASSERT(_M_size == __l.size());
+ std::__valarray_copy(__l.begin(), __l.size(), _M_data);
+ }
+#endif
+
template<typename _Tp>
inline valarray<_Tp>&
valarray<_Tp>::operator=(const _Tp& __t)
OpenPOWER on IntegriCloud