template class StridedArrayProxy : protected ArrayProxy { public: using ArrayProxy::ArrayProxy; StridedArrayProxy( uint32_t count, T const * ptr, uint32_t stride ) VULKAN_HPP_NOEXCEPT : ArrayProxy( count, ptr ) , m_stride( stride ) { VULKAN_HPP_ASSERT( sizeof( T ) <= stride ); } using ArrayProxy::begin; const T * end() const VULKAN_HPP_NOEXCEPT { return reinterpret_cast( static_cast( begin() ) + size() * m_stride ); } using ArrayProxy::front; const T & back() const VULKAN_HPP_NOEXCEPT { VULKAN_HPP_ASSERT( begin() && size() ); return *reinterpret_cast( static_cast( begin() ) + ( size() - 1 ) * m_stride ); } using ArrayProxy::empty; using ArrayProxy::size; using ArrayProxy::data; uint32_t stride() const { return m_stride; } private: uint32_t m_stride = sizeof( T ); };