@@ -1538,6 +1538,52 @@ void Dense<ValueType>::compute_norm1_impl(absolute_type* result,
15381538 compute_norm1 (result, tmp);
15391539}
15401540
1541+ template <typename ValueType>
1542+ syn::variant_from_tuple<syn::apply_to_list<std::unique_ptr, dense_types>>
1543+ Dense<ValueType>::create_local_view_impl(
1544+ syn::variant_from_tuple<supported_value_types> type)
1545+ {
1546+ return std::visit (
1547+ [this ](auto type)
1548+ -> syn::variant_from_tuple<
1549+ syn::apply_to_list<std::unique_ptr, dense_types>> {
1550+ using SndValueType = std::decay_t <decltype (type)>;
1551+ if constexpr (std::is_same_v<ValueType, SndValueType>) {
1552+ return make_dense_view (this );
1553+ } else {
1554+ GKO_INVALID_STATE (" Unsupported value type" );
1555+ }
1556+ },
1557+ type);
1558+ }
1559+
1560+ template <typename ValueType>
1561+ auto Dense<ValueType>::create_local_view_impl(
1562+ syn::variant_from_tuple<supported_value_types> type) const
1563+ -> syn::variant_from_tuple<syn::apply_to_list<
1564+ std::unique_ptr, syn::apply_to_list<std::add_const_t , dense_types>>>
1565+ {
1566+ return std::visit (
1567+ [this ](auto type)
1568+ -> syn::variant_from_tuple<syn::apply_to_list<
1569+ std::unique_ptr,
1570+ syn::apply_to_list<std::add_const_t , dense_types>>> {
1571+ using SndValueType = std::decay_t <decltype (type)>;
1572+ if constexpr (std::is_same_v<ValueType, SndValueType>) {
1573+ return make_const_dense_view (this );
1574+ } else {
1575+ GKO_INVALID_STATE (" Unsupported value type" );
1576+ }
1577+ },
1578+ type);
1579+ }
1580+
1581+ template <typename ValueType>
1582+ auto Dense<ValueType>::get_stride_impl() const -> size_type
1583+ {
1584+ return get_stride ();
1585+ }
1586+
15411587
15421588template <typename ValueType>
15431589std::unique_ptr<LinOp> Dense<ValueType>::permute(
0 commit comments