|
| 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 (> >=) |
|
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.