1 #ifndef VTESTBED_GEOMETRY_RECTANGLE_HH     2 #define VTESTBED_GEOMETRY_RECTANGLE_HH     6 #include <vtestbed/geometry/types.hh>    12         template <
class T, 
int N>
    19             static constexpr 
const int dimensions = N;
    20             using scalar_type = T;
    21             using value_type = 
typename base_type::value_type;
    22             using pointer = 
typename base_type::pointer;
    23             using const_pointer = 
typename base_type::const_pointer;
    24             using reference = 
typename base_type::reference;
    25             using const_reference = 
typename base_type::const_reference;
    26             using iterator = 
typename base_type::iterator;
    27             using const_iterator = 
typename base_type::const_iterator;
    28             using size_type = 
typename base_type::size_type;
    29             using difference_type = 
typename base_type::difference_type;
    30             using reverse_iterator = 
typename base_type::reverse_iterator;
    31             using const_reverse_iterator = 
typename base_type::const_reverse_iterator;
    34             using base_type::base_type;
    35             using base_type::operator=;
    36             using base_type::operator[];
    40             Rectangle(const_reference p0, const_reference p1):
    45                 return this->back() - this->front();
    48             inline const_reference min()
 const { 
return this->front(); }
    49             inline const_reference max()
 const { 
return this->back(); }
    50             inline reference min() { 
return this->front(); }
    51             inline reference max() { 
return this->back(); }
    52             inline void clear() { this->front() = T{}, this->back() = T{}; }
    56         template <
class T, 
int N>
    59             return (r[0]+r[1])*T{0.5};
    62         template <
class T, 
int N>
    64         area(
const Rectangle<T,N>& r) {
    65             return product(r[1] - r[0]);
    72 #endif // vim:filetype=cpp