Visual Computing Library
Loading...
Searching...
No Matches
vcl::Array4Concept Concept Reference

A concept representing a 4-dimensional array. More...

#include <vclib/concepts/space/array.h>

Concept definition

template<typename T>
ArrayConcept<T> && requires (
T&& obj,
std::size_t n,
typename RemoveRef<T>::Reference ref,
typename RemoveRef<T>::ConstReference cRef,
typename RemoveRef<T>::Pointer ptr,
typename RemoveRef<T>::ConstPointer cPtr) {
requires RemoveRef<T>::DIM == 4;
RemoveRef<T>(n, n, n, n);
{ obj.sizeX() } -> std::integral;
{ obj.sizeY() } -> std::integral;
{ obj.sizeZ() } -> std::integral;
{ obj.sizeW() } -> std::integral;
{ obj.operator()(n, n, n, n) } -> std::convertible_to<decltype(cRef)>;
{ obj.data(n) } -> std::convertible_to<decltype(cPtr)>;
{ obj.data(n, n) } -> std::convertible_to<decltype(cPtr)>;
{ obj.data(n, n, n) } -> std::convertible_to<decltype(cPtr)>;
requires IsConst<T> || requires {
{ obj.operator()(n, n, n, n) } -> std::same_as<decltype(ref)>;
{ obj.data(n) } -> std::same_as<decltype(ptr)>;
{ obj.data(n, n) } -> std::same_as<decltype(ptr)>;
{ obj.data(n, n, n) } -> std::same_as<decltype(ptr)>;
{ obj.resize(n, n, n, n) } -> std::same_as<void>;
{ obj.conservativeResize(n, n, n, n) } -> std::same_as<void>;
};
}
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43
A concept representing a 4-dimensional array.
Definition array.h:187
A concept representing a N-dimensional array.
Definition array.h:45

Detailed Description

A concept representing a 4-dimensional array.

This concept defines a set of requirements that must be satisfied by any type that wants to model a 4-dimensional array.

Template Parameters
TThe type to be tested for conformity to the Array4Concept.