std::valarr...ator+,-,~,!(3)
π std::valarr...ator+,-,~,!(3) π
okay bestie, this is the C++ Standard Libary manual page for std::valarray::operator+,-,~,!, and the manual name is exactly std::valarr...ator+,-,~,!(3) β folding that right in near the top so the header line doesnβt have to be all extra. slay. π
π NAME π
std::valarray::operator+,-,~,! - std::valarray::operator+,-,~,!
β¨ Synopsis β¨
valarray<T> operator+() const; (1)
valarray<T> operator-() const; (2)
valarray<T> operator~() const; (3)
valarray<bool> operator!() const; (4)
Applies unary operators to each element in the numeric array.
π Parameters π
(none) β literally no parameters, bestie.
π Return value π
You get back a numeric array containing elements with values obtained by applying the corresponding operator to the values in *this.
π«Ά Exceptions π«Ά
May throw implementation-defined exceptions.
bestie, thatβs the whole warning: implementation-defined exceptions are possible, so donβt act surprised if your implementation has opinions. π
π¦ Notes π¦
Each of the operators can only be instantiated if the following requirements are met:
- The indicated operator can be applied to type
T. - The result value can be unambiguously converted to
T(1-3) orbool(4).
The function can be implemented with the return type different from std::valarray. In this case, the replacement type has the following properties:
- All
constmember functions ofstd::valarrayare provided. std::valarray,std::slice_array,std::gslice_array,std::mask_arrayandstd::indirect_arraycan be constructed from the replacement type.- For every function taking a
const std::valarray<T>&exceptbegin()andend()(since C++11), identical functions taking the replacement types shall be added; - For every function taking two
const std::valarray<T>&arguments, identical functions taking every combination ofconst std::valarray<T>&and replacement types shall be added. - The return type does not add more than two levels of template nesting over the most deeply-nested argument type.
π Example π
okay, // Run this code β literally copy-paste this:
#include <iostream>
#include <string_view>
#include <valarray>
template<typename T>
void print(std::string_view const note,
std::valarray<T> const vala, // by-value, see Notes above
std::string_view const term = "\n")
{
std::cout << note << std::boolalpha << std::showpos;
for (T const element : vala)
std::cout << '\t' << element;
std::cout << term;
}
int main()
{
std::valarray<int> x{1, 2, 3, 4};
print<int>("x: ", x);
print<int>("+x: ", +x);
print<int>("+ + x: ", + + x);
print<int>("-x: ", -x);
print<int>("- - x: ", - - x, "\n\n");
std::valarray<short> y{0, 1, -1, 0x7fff};
print<short>("y: ", y);
print<short>("~y: ", ~y);
print<short>("~~y: ", ~~y, "\n\n");
std::valarray<bool> z{true, false};
print<bool>("z: ", z);
print<bool>("!z: ", !z);
print<bool>("!!z: ", !!z);
}
π Possible output: π
x: +1 +2 +3 +4
+x: +1 +2 +3 +4
+ + x: +1 +2 +3 +4
-x: -1 -2 -3 -4
- - x: +1 +2 +3 +4
y: +0 +1 -1 +32767
~y: -1 -2 +0 -32768
~~y: +0 +1 -1 +32767
z: true false
!z: false true
!!z: true false
π See also π
operator+=,operator-=,operator*=,operator/=,operator%=,operator&=,operator|=,operator^=,operator<<=,operator>>=β applies compound assignment operator to each element of the valarray (public member function)operator+,operator-,operator*,operator/,operator%,operator&,operator|,operator^,operator<<,operator>>,operator&&,operator||β applies binary operators to each element of two valarrays, or a valarray and a value (function template)
π Hidden category π
- Pages with unreviewed LWG DR marker
mwah π this lil page came from http://cppreference.com, dated 2024.06.10, and itβs the std::valarr...ator+,-,~,!(3) manual β thatβs the whole footer folded into this cute sign-off instead of a boring last line. periodt. πΈ
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms