Namespaces
Variants

std::mask_array<T>:: operator=

From cppreference.net

void operator = ( const T & valor ) const ;
(1)
void operator = ( const std:: valarray < T > & arr_val ) const ;
(2)
const mask_array & operator = ( const mask_array & otro_arr ) const ;
(3)

Asigna valores a todos los elementos referidos.

1) Asigna value a todos los elementos.
2) Asigna los elementos de val_arr a los elementos referenciados de * this .
3) Asigna los elementos seleccionados de other_arr a los elementos referenciados de * this .

Contenidos

Parámetros

value - un valor a asignar a todos los elementos referidos
val_arr - std::valarray a asignar
other_arr - std::mask_array a asignar

Valor de retorno

1,2) (ninguno)
3) * this

Ejemplo

#include <iomanip>
#include <iostream>
#include <valarray>
void print(std::valarray<int> const& v)
{
    for (int e : v)
        std::cout << std::setw(2) << e << ' ';
    std::cout << '\n';
}
int main()
{
    const auto init = {1, 2, 3, 4, 5, 6, 7, 8};
    std::valarray<int> v;
    v = init;
    v[(v % 2) == 0] = 0; // (1)
    print(v);
    v = init;
    v[(v % 2) == 1] = std::valarray<int>{-1, -2, -3, -4}; // (2)
    print(v);
    v = init;
    v[(v % 2) == 0] = v[(v % 2) == 1]; // (3)
    print(v);
}

Salida:

 1  0  3  0  5  0  7  0 
-1  2 -2  4 -3  6 -4  8 
 1  1  3  3  5  5  7  7

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 123 C++98 la sobrecarga (2) no era const convertida a const
LWG 253 C++98 el operador de asignación de copia era privado convertido a público
LWG 621 C++98 el operador de asignación de copia no era const convertido a const