Loading...
Searching...
No Matches
Dune::Simd::VcImpl::Proxy< V > Class Template Reference

A reference-like proxy for elements of random-access vectors. More...

`#include <dune/common/simd/vc.hh>`

## Public Types

using | value_type = typename V::value_type

## Public Member Functions

| Proxy (std::size_t idx, V &vec)
| Proxy (const Proxy &)=delete
| Proxy (Proxy &&)=default
| operator value_type () const
| DUNE_SIMD_VC_ASSIGNMENT (=)
DUNE_SIMD_VC_ASSIGNMENT * | DUNE_SIMD_VC_ASSIGNMENT (/=);DUNE_SIMD_VC_ASSIGNMENT(%=
| DUNE_SIMD_VC_ASSIGNMENT (+=)
| DUNE_SIMD_VC_ASSIGNMENT (-=)
| DUNE_SIMD_VC_ASSIGNMENT (<<=)
| DUNE_SIMD_VC_ASSIGNMENT (> >=)
DUNE_SIMD_VC_ASSIGNMENT & | DUNE_SIMD_VC_ASSIGNMENT (^=);DUNE_SIMD_VC_ASSIGNMENT(|=
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
Proxy | operator++ ()
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
Proxy | operator-- ()
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
value_type | operator++ (int)
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
value_type | operator-- (int)
DUNE_SIMD_VC_BINARY * | DUNE_SIMD_VC_BINARY (/);DUNE_SIMD_VC_BINARY(%
| DUNE_SIMD_VC_BINARY (+)
| DUNE_SIMD_VC_BINARY (-)
| DUNE_SIMD_VC_BINARY (<<)
| DUNE_SIMD_VC_BINARY (> >)
DUNE_SIMD_VC_BINARY & | DUNE_SIMD_VC_BINARY (^);DUNE_SIMD_VC_BINARY(|
| DUNE_SIMD_VC_BINARY (<)
| DUNE_SIMD_VC_BINARY (>)
| DUNE_SIMD_VC_BINARY (<=)
| DUNE_SIMD_VC_BINARY (>=)
| DUNE_SIMD_VC_BINARY (==)
| DUNE_SIMD_VC_BINARY (!=)
template<class T, class Abi, class = std::enable_if_t<std::is_convertible<value_type, T>::value>>
| operator Vc::Vector< T, Abi > () &&
template<class T, std::size_t n, class Vec, std::size_t m, class = std::enable_if_t<std::is_convertible<value_type, T>::value>>
| operator Vc::SimdArray< T, n, Vec, m > () &&
DUNE_SIMD_VC_ASSIGN * | DUNE_SIMD_VC_ASSIGN (/=);DUNE_SIMD_VC_ASSIGN(%=
| DUNE_SIMD_VC_ASSIGN (+=)
| DUNE_SIMD_VC_ASSIGN (-=)
DUNE_SIMD_VC_ASSIGN & | DUNE_SIMD_VC_ASSIGN (^=);DUNE_SIMD_VC_ASSIGN(|=
| DUNE_SIMD_VC_ASSIGN (<<=)
| DUNE_SIMD_VC_ASSIGN (> >=)

## Friends

void | swap (const Proxy &a, const Proxy &b)
void | swap (value_type &a, const Proxy &b)
void | swap (const Proxy &a, value_type &b)

## Detailed Description

template<class V>
class Dune::Simd::VcImpl::Proxy< V >

A reference-like proxy for elements of random-access vectors.

This is necessary because Vc's lane-access operation return a proxy that cannot constructed by non-Vc code (i.e. code that isn't explicitly declared friend). This means in particular that there is no copy/move constructor, meaning we cannot return such proxies from our own functions, such as lane(). To work around this, we define our own proxy class which internally holds a reference to the vector and a lane index.

Note: this should be unnecessary with C++17, as just returning a temporary object should not involve copying it.

## Member Typedef Documentation

## value_type

template<class V>

using Dune::Simd::VcImpl::Proxy< V >::value_type = typename V::value_type

## Constructor & Destructor Documentation

## Proxy() [1/3]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::Proxy | ( | std::size_t | idx,
|  | V & | vec )

inline

## Proxy() [2/3]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::Proxy | ( | const Proxy< V > & |  | ) |

delete

## Proxy() [3/3]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::Proxy | ( | Proxy< V > && |  | ) |

default

## Member Function Documentation

## DUNE_SIMD_VC_ASSIGN() [1/6]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | + |  | ) |

## DUNE_SIMD_VC_ASSIGN() [2/6]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | - |  | ) |

## DUNE_SIMD_VC_ASSIGN() [3/6]

template<class V>

DUNE_SIMD_VC_ASSIGN * Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | / |  | ) |

## DUNE_SIMD_VC_ASSIGN() [4/6]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | << |  | ) |

## DUNE_SIMD_VC_ASSIGN() [5/6]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | >= |  | ) |

## DUNE_SIMD_VC_ASSIGN() [6/6]

template<class V>

DUNE_SIMD_VC_ASSIGN & Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | ^ |  | ) |

## DUNE_SIMD_VC_ASSIGNMENT() [1/7]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | + |  | ) |

## DUNE_SIMD_VC_ASSIGNMENT() [2/7]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | - |  | ) |

## DUNE_SIMD_VC_ASSIGNMENT() [3/7]

template<class V>

DUNE_SIMD_VC_ASSIGNMENT * Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | / |  | ) |

## DUNE_SIMD_VC_ASSIGNMENT() [4/7]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | << |  | ) |

## DUNE_SIMD_VC_ASSIGNMENT() [5/7]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( |  | ) |

## DUNE_SIMD_VC_ASSIGNMENT() [6/7]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | >= |  | ) |

## DUNE_SIMD_VC_ASSIGNMENT() [7/7]

template<class V>

DUNE_SIMD_VC_ASSIGNMENT & Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | ^ |  | ) |

## DUNE_SIMD_VC_BINARY() [1/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ! |  | ) |

## DUNE_SIMD_VC_BINARY() [2/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | + |  | ) |

## DUNE_SIMD_VC_BINARY() [3/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | - |  | ) |

## DUNE_SIMD_VC_BINARY() [4/12]

template<class V>

DUNE_SIMD_VC_BINARY * Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | / |  | ) |

## DUNE_SIMD_VC_BINARY() [5/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( |  | ) |

## DUNE_SIMD_VC_BINARY() [6/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | << |  | ) |

## DUNE_SIMD_VC_BINARY() [7/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | <= |  | ) |

## DUNE_SIMD_VC_BINARY() [8/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( |  | ) |

## DUNE_SIMD_VC_BINARY() [9/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( |  | ) |

## DUNE_SIMD_VC_BINARY() [10/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( |  | ) |

## DUNE_SIMD_VC_BINARY() [11/12]

template<class V>

Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | >= |  | ) |

## DUNE_SIMD_VC_BINARY() [12/12]

template<class V>

DUNE_SIMD_VC_BINARY & Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ^ |  | ) |

## operator value_type()

template<class V>

Dune::Simd::VcImpl::Proxy< V >::operator value_type | ( |  | ) | const

inline

## operator Vc::SimdArray< T, n, Vec, m >()

template<class V>
template<class T, std::size_t n, class Vec, std::size_t m, class = std::enable_if_t<std::is_convertible<value_type, T>::value>>

Dune::Simd::VcImpl::Proxy< V >::operator Vc::SimdArray< T, n, Vec, m > | ( |  | ) | &&

inline

## operator Vc::Vector< T, Abi >()

template<class V>
template<class T, class Abi, class = std::enable_if_t<std::is_convertible<value_type, T>::value>>

Dune::Simd::VcImpl::Proxy< V >::operator Vc::Vector< T, Abi > | ( |  | ) | &&

inline

## operator++() [1/2]

template<class V>
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>

Proxy Dune::Simd::VcImpl::Proxy< V >::operator++ | ( |  | ) |

inline

## operator++() [2/2]

template<class V>
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>

value_type Dune::Simd::VcImpl::Proxy< V >::operator++ | ( | int |  | ) |

inline

## operator--() [1/2]

template<class V>
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>

Proxy Dune::Simd::VcImpl::Proxy< V >::operator-- | ( |  | ) |

inline

## operator--() [2/2]

template<class V>
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>

value_type Dune::Simd::VcImpl::Proxy< V >::operator-- | ( | int |  | ) |

inline

## Friends And Related Symbol Documentation

## swap [1/3]

template<class V>

void swap | ( | const Proxy< V > & | a,
|  | const Proxy< V > & | b )

friend

## swap [2/3]

template<class V>

void swap | ( | const Proxy< V > & | a,
|  | value_type & | b )

friend

## swap [3/3]

template<class V>

void swap | ( | value_type & | a,
|  | const Proxy< V > & | b )

friend

The documentation for this class was generated from the following file:

- simd/vc.hh