diff options
| author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-07-21 19:40:39 +0000 |
|---|---|---|
| committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-07-21 19:40:39 +0000 |
| commit | b23fdac1bed6b8eedb8615526bfe75e16f70488a (patch) | |
| tree | efdfd86136a070108ac69fda382332c5475473a6 /libstdc++-v3/include/std/valarray | |
| parent | 08cc44e74d28ab49958b246b6d1f3ee827c21d24 (diff) | |
| download | ppe42-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/valarray | 36 |
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) |

