3 #ifndef DUNE_COMMON_SCALARMATRIXVIEW_HH
4 #define DUNE_COMMON_SCALARMATRIXVIEW_HH
38 class ScalarMatrixView :
39 public DenseMatrix<ScalarMatrixView<K>>
41 ScalarVectorView<K> data_;
42 using Base = DenseMatrix<ScalarMatrixView<K>>;
45 friend class ScalarMatrixView;
75 constexpr ScalarMatrixView ()
80 ScalarMatrixView (K* p) :
85 ScalarMatrixView (
const ScalarMatrixView &other) :
91 ScalarMatrixView (ScalarMatrixView &&other) :
97 ScalarMatrixView& operator= (
const ScalarMatrixView& other)
104 ScalarMatrixView& operator= (
const ScalarMatrixView<KK>& other)
112 std::enable_if_t<std::is_convertible<T, K>::value,
int> = 0>
113 inline ScalarMatrixView& operator= (
const T& k)
120 static constexpr
size_type mat_rows() {
return 1; }
121 static constexpr
size_type mat_cols() {
return 1; }
140 std::ostream&
operator<< (std::ostream& s,
const ScalarMatrixView<K>& a)
148 std::enable_if_t<IsNumber<T>::value,
int> = 0>
151 return ScalarMatrixView<T>{&t};
156 std::enable_if_t<IsNumber<T>::value,
int> = 0>
157 auto asMatrix(
const T& t)
159 return ScalarMatrixView<const T>{&t};
164 std::enable_if_t<not IsNumber<T>::value,
int> = 0>
172 std::enable_if_t<not IsNumber<T>::value,
int> = 0>
173 const T& asMatrix(
const T& t)
183 struct FieldTraits<Impl::ScalarMatrixView<K>> :
public FieldTraits<std::remove_const_t<K>> {};
186 struct DenseMatVecTraits<Impl::ScalarMatrixView<K>>
188 using derived_type = Impl::ScalarMatrixView<K>;
189 using row_type = Impl::ScalarVectorView<K>;
190 using row_reference = row_type&;
191 using const_row_reference =
const row_type&;
192 using value_type = std::remove_const_t<K>;
193 using size_type = std::size_t;
198 struct AutonomousValueType<Impl::ScalarMatrixView<K>>
200 using type = FieldMatrix<std::remove_const_t<K>,1,1>;
206 #endif // DUNE_COMMON_SCALARMATRIXVIEW_HH