[simd.mask.unary]

# 29 Numerics library [[numerics]](./#numerics)

## 29.10 Data-parallel types [[simd]](simd#mask.unary)

### 29.10.9 Class template basic_mask [[simd.mask.class]](simd.mask.class#simd.mask.unary)

#### 29.10.9.4 basic_mask unary operators [simd.mask.unary]

[ð](#lib:operator,operator,basic_mask)

`constexpr basic_mask operator!() const noexcept;
constexpr basic_vec<integer-from<Bytes>, Abi> operator+() const noexcept;
constexpr basic_vec<integer-from<Bytes>, Abi> operator-() const noexcept;
constexpr basic_vec<integer-from<Bytes>, Abi> operator~() const noexcept;
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L20272)

Let *op* be the operator[.](#1.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L20275)

*Returns*: A data-parallel object where the ith element is initialized to the
results of applying *op* to operator[](i) for all i in
the range of [0, size())[.](#2.sentence-1)
