table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 
| std::experimental::simd::operator!,~,+,-(3) | C++ Standard Libary | std::experimental::simd::operator!,~,+,-(3) | 
NAME¶
std::experimental::simd::operator!,~,+,- - std::experimental::simd::operator!,~,+,-
Synopsis¶
 mask_type operator!() const noexcept; (1) (parallelism TS
    v2)
  
   simd operator~() const noexcept; (2) (parallelism TS v2)
  
   simd operator+() const noexcept; (3) (parallelism TS v2)
  
   simd operator-() const noexcept; (4) (parallelism TS v2)
  
   Applies the given unary operator on each element of the simd.
  
   1) Returns a simd_mask<T, Abi> where the i^th element equals
    !operator[](i) for all
  
   i in the range of [0, size()).
  
   2) Returns a simd where each bit is the inverse of the corresponding bit in
    *this.
  
   This overload participates in overload resolution only if T is an integral
    type.
  
   3) Returns a copy of itself.
  
   4) Returns a simd where the i^th element is initialized to -operator[](i) for
    all i
  
   in the range of [0, size()).
Example¶
// Run this code
  
   #include <cstddef>
  
   #include <experimental/simd>
  
   #include <iostream>
  
   #include <string_view>
  
   namespace stdx = std::experimental;
  
   void println(std::string_view op, const stdx::native_simd_mask<int> x)
  
   {
  
   std::cout << op << ": ";
  
   for (std::size_t i = 0; i < x.size(); ++i)
  
   std::cout << std::boolalpha << x[i] << ' ';
  
   std::cout << '\n';
  
   }
  
   void println(std::string_view op, const stdx::native_simd<int> x)
  
   {
  
   std::cout << op << ": ";
  
   for (std::size_t i = 0; i < x.size(); ++i)
  
   std::cout << x[i] << ' ';
  
   std::cout << '\n';
  
   }
  
   int main()
  
   {
  
   const stdx::native_simd<int> a([](int i) { return i; });
  
   println(" a", a);
  
   println(" !a", !a);
  
   println(" ~a", ~a);
  
   println("~~a", ~~a);
  
   println(" +a", +a);
  
   println(" -a", -a);
  
   println("+-a", +-a);
  
   }
Possible output:¶
 a: 0 1 2 3
  
   !a: true false false false
  
   ~a: -1 -2 -3 -4
  
   ~~a: 0 1 2 3
  
   +a: 0 1 2 3
  
   -a: 0 -1 -2 -3
  
   +-a: 0 -1 -2 -3
| 2024.06.10 | http://cppreference.com |