From Jason Turner

[template.valarray.overview]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpgs6ajetg/{from.md → to.md} +54 -50
tmp/tmpgs6ajetg/{from.md → to.md} RENAMED
@@ -2,13 +2,13 @@
2
 
3
  ``` cpp
4
  namespace std {
5
  template<class T> class valarray {
6
  public:
7
- typedef T value_type;
8
 
9
- // [valarray.cons] construct/destroy:
10
  valarray();
11
  explicit valarray(size_t);
12
  valarray(const T&, size_t);
13
  valarray(const T*, size_t);
14
  valarray(const valarray&);
@@ -18,86 +18,90 @@ namespace std {
18
  valarray(const mask_array<T>&);
19
  valarray(const indirect_array<T>&);
20
  valarray(initializer_list<T>);
21
  ~valarray();
22
 
23
- // [valarray.assign] assignment:
24
- valarray<T>& operator=(const valarray<T>&);
25
- valarray<T>& operator=(valarray<T>&&) noexcept;
26
  valarray& operator=(initializer_list<T>);
27
- valarray<T>& operator=(const T&);
28
- valarray<T>& operator=(const slice_array<T>&);
29
- valarray<T>& operator=(const gslice_array<T>&);
30
- valarray<T>& operator=(const mask_array<T>&);
31
- valarray<T>& operator=(const indirect_array<T>&);
32
 
33
- // [valarray.access] element access:
34
  const T& operator[](size_t) const;
35
  T& operator[](size_t);
36
 
37
- // [valarray.sub] subset operations:
38
- valarray<T> operator[](slice) const;
39
  slice_array<T> operator[](slice);
40
- valarray<T> operator[](const gslice&) const;
41
  gslice_array<T> operator[](const gslice&);
42
- valarray<T> operator[](const valarray<bool>&) const;
43
  mask_array<T> operator[](const valarray<bool>&);
44
- valarray<T> operator[](const valarray<size_t>&) const;
45
  indirect_array<T> operator[](const valarray<size_t>&);
46
 
47
- // [valarray.unary] unary operators:
48
- valarray<T> operator+() const;
49
- valarray<T> operator-() const;
50
- valarray<T> operator~() const;
51
  valarray<bool> operator!() const;
52
 
53
- // [valarray.cassign] computed assignment:
54
- valarray<T>& operator*= (const T&);
55
- valarray<T>& operator/= (const T&);
56
- valarray<T>& operator%= (const T&);
57
- valarray<T>& operator+= (const T&);
58
- valarray<T>& operator-= (const T&);
59
- valarray<T>& operator^= (const T&);
60
- valarray<T>& operator&= (const T&);
61
- valarray<T>& operator|= (const T&);
62
- valarray<T>& operator<<=(const T&);
63
- valarray<T>& operator>>=(const T&);
64
 
65
- valarray<T>& operator*= (const valarray<T>&);
66
- valarray<T>& operator/= (const valarray<T>&);
67
- valarray<T>& operator%= (const valarray<T>&);
68
- valarray<T>& operator+= (const valarray<T>&);
69
- valarray<T>& operator-= (const valarray<T>&);
70
- valarray<T>& operator^= (const valarray<T>&);
71
- valarray<T>& operator|= (const valarray<T>&);
72
- valarray<T>& operator&= (const valarray<T>&);
73
- valarray<T>& operator<<=(const valarray<T>&);
74
- valarray<T>& operator>>=(const valarray<T>&);
75
 
76
- // [valarray.members] member functions:
77
  void swap(valarray&) noexcept;
78
 
79
  size_t size() const;
80
 
81
  T sum() const;
82
  T min() const;
83
  T max() const;
84
 
85
- valarray<T> shift (int) const;
86
- valarray<T> cshift(int) const;
87
- valarray<T> apply(T func(T)) const;
88
- valarray<T> apply(T func(const T&)) const;
89
  void resize(size_t sz, T c = T());
90
  };
 
 
91
  }
92
  ```
93
 
94
  The class template `valarray<T>` is a one-dimensional smart array, with
95
  elements numbered sequentially from zero. It is a representation of the
96
- mathematical concept of an ordered set of values. The illusion of higher
97
- dimensionality may be produced by the familiar idiom of computed
98
- indices, together with the powerful subsetting capabilities provided by
99
- the generalized subscript operators.[^8]
 
 
100
 
101
  An implementation is permitted to qualify any of the functions declared
102
  in `<valarray>` as `inline`.
103
 
 
2
 
3
  ``` cpp
4
  namespace std {
5
  template<class T> class valarray {
6
  public:
7
+ using value_type = T;
8
 
9
+ // [valarray.cons], construct/destroy
10
  valarray();
11
  explicit valarray(size_t);
12
  valarray(const T&, size_t);
13
  valarray(const T*, size_t);
14
  valarray(const valarray&);
 
18
  valarray(const mask_array<T>&);
19
  valarray(const indirect_array<T>&);
20
  valarray(initializer_list<T>);
21
  ~valarray();
22
 
23
+ // [valarray.assign], assignment
24
+ valarray& operator=(const valarray&);
25
+ valarray& operator=(valarray&&) noexcept;
26
  valarray& operator=(initializer_list<T>);
27
+ valarray& operator=(const T&);
28
+ valarray& operator=(const slice_array<T>&);
29
+ valarray& operator=(const gslice_array<T>&);
30
+ valarray& operator=(const mask_array<T>&);
31
+ valarray& operator=(const indirect_array<T>&);
32
 
33
+ // [valarray.access], element access
34
  const T& operator[](size_t) const;
35
  T& operator[](size_t);
36
 
37
+ // [valarray.sub], subset operations
38
+ valarray operator[](slice) const;
39
  slice_array<T> operator[](slice);
40
+ valarray operator[](const gslice&) const;
41
  gslice_array<T> operator[](const gslice&);
42
+ valarray operator[](const valarray<bool>&) const;
43
  mask_array<T> operator[](const valarray<bool>&);
44
+ valarray operator[](const valarray<size_t>&) const;
45
  indirect_array<T> operator[](const valarray<size_t>&);
46
 
47
+ // [valarray.unary], unary operators
48
+ valarray operator+() const;
49
+ valarray operator-() const;
50
+ valarray operator~() const;
51
  valarray<bool> operator!() const;
52
 
53
+ // [valarray.cassign], compound assignment
54
+ valarray& operator*= (const T&);
55
+ valarray& operator/= (const T&);
56
+ valarray& operator%= (const T&);
57
+ valarray& operator+= (const T&);
58
+ valarray& operator-= (const T&);
59
+ valarray& operator^= (const T&);
60
+ valarray& operator&= (const T&);
61
+ valarray& operator|= (const T&);
62
+ valarray& operator<<=(const T&);
63
+ valarray& operator>>=(const T&);
64
 
65
+ valarray& operator*= (const valarray&);
66
+ valarray& operator/= (const valarray&);
67
+ valarray& operator%= (const valarray&);
68
+ valarray& operator+= (const valarray&);
69
+ valarray& operator-= (const valarray&);
70
+ valarray& operator^= (const valarray&);
71
+ valarray& operator|= (const valarray&);
72
+ valarray& operator&= (const valarray&);
73
+ valarray& operator<<=(const valarray&);
74
+ valarray& operator>>=(const valarray&);
75
 
76
+ // [valarray.members], member functions
77
  void swap(valarray&) noexcept;
78
 
79
  size_t size() const;
80
 
81
  T sum() const;
82
  T min() const;
83
  T max() const;
84
 
85
+ valarray shift (int) const;
86
+ valarray cshift(int) const;
87
+ valarray apply(T func(T)) const;
88
+ valarray apply(T func(const T&)) const;
89
  void resize(size_t sz, T c = T());
90
  };
91
+
92
+ template<class T, size_t cnt> valarray(const T(&)[cnt], size_t) -> valarray<T>;
93
  }
94
  ```
95
 
96
  The class template `valarray<T>` is a one-dimensional smart array, with
97
  elements numbered sequentially from zero. It is a representation of the
98
+ mathematical concept of an ordered set of values. For convenience, an
99
+ object of type `valarray<T>` is referred to as an “array” throughout the
100
+ remainder of  [[numarray]]. The illusion of higher dimensionality may be
101
+ produced by the familiar idiom of computed indices, together with the
102
+ powerful subsetting capabilities provided by the generalized subscript
103
+ operators.[^8]
104
 
105
  An implementation is permitted to qualify any of the functions declared
106
  in `<valarray>` as `inline`.
107