diff --git a/include/fcarouge/internal/utility.hpp b/include/fcarouge/internal/utility.hpp index 9499cae508..5a747562b5 100644 --- a/include/fcarouge/internal/utility.hpp +++ b/include/fcarouge/internal/utility.hpp @@ -96,6 +96,9 @@ template struct not_implemented { static_assert(none, "This type is not implemented. See message."); }; +inline constexpr auto adl_transpose{ + [](const auto &value) { return transpose(value); }}; + struct transpose final { template [[nodiscard]] inline constexpr auto @@ -108,6 +111,11 @@ struct transpose final { [[nodiscard]] inline constexpr auto operator()(const Matrix &value) const { return value.transpose(); } + + template + [[nodiscard]] inline constexpr auto operator()(const Matrix &value) const { + return adl_transpose(value); + } }; //! @todo The dimensional analysis shows the deduction of matrices gives us the @@ -126,6 +134,38 @@ struct deducer final { const Rhs &rhs) const -> decltype(lhs / rhs); + // Type-erased matrix first party linear algebra support. + template