|
| | 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.