Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::algebra::OneDimensionalVector< S, Tag > Struct Template Referenceexport

Reified carrier for a 1D module/vector-space coordinate. More...

Public Types

using scalar_type = S

Public Member Functions

constexpr OneDimensionalVector (S value)
template<typename U>
requires std::constructible_from<S, U>
constexpr OneDimensionalVector (U value)
constexpr S coordinate () const noexcept

Public Attributes

S x {}

Static Public Attributes

template<typename Op>
static constexpr auto unit_v
template<typename Op>
static constexpr bool is_associative_v
template<typename Op>
static constexpr bool is_commutative_v

Friends

constexpr bool operator== (const OneDimensionalVector &, const OneDimensionalVector &)=default
constexpr OneDimensionalVector operator+ (const OneDimensionalVector &a, const OneDimensionalVector &b)
constexpr OneDimensionalVector operator- (const OneDimensionalVector &a, const OneDimensionalVector &b)
constexpr OneDimensionalVector operator- (const OneDimensionalVector &v)
constexpr OneDimensionalVector operator* (const S &s, const OneDimensionalVector &v)
constexpr OneDimensionalVector operator* (const OneDimensionalVector &v, const S &s)

Detailed Description

template<typename S, typename Tag = void>
requires std::equality_comparable<S> && std::default_initializable<S>
struct dedekind::algebra::OneDimensionalVector< S, Tag >

Reified carrier for a 1D module/vector-space coordinate.

This is the concrete baseline for issue #125. The coordinate lives in the scalar species S, with pointwise addition and scalar action.

Member Data Documentation

◆ is_associative_v

template<typename S, typename Tag = void>
template<typename Op>
bool dedekind::algebra::OneDimensionalVector< S, Tag >::is_associative_v
staticconstexpr
Initial value:
=
std::same_as<Op, std::plus<OneDimensionalVector>> ||
std::same_as<Op, std::plus<void>>

◆ is_commutative_v

template<typename S, typename Tag = void>
template<typename Op>
bool dedekind::algebra::OneDimensionalVector< S, Tag >::is_commutative_v
staticconstexpr
Initial value:
=
std::same_as<Op, std::plus<OneDimensionalVector>> ||
std::same_as<Op, std::plus<void>>

◆ unit_v

template<typename S, typename Tag = void>
template<typename Op>
auto dedekind::algebra::OneDimensionalVector< S, Tag >::unit_v
staticconstexpr
Initial value:
= []() {
if constexpr (std::same_as<Op, std::plus<OneDimensionalVector>> ||
std::same_as<Op, std::plus<void>>) {
return OneDimensionalVector{};
}
}()

The documentation for this struct was generated from the following file: