17#ifndef dealii_matrix_free_type_traits_h
18#define dealii_matrix_free_type_traits_h
41 using local_element_t =
decltype(std::declval<T const>().local_element(0));
52 decltype(std::declval<T>().add_local_element(0,
typename T::value_type()));
64 decltype(std::declval<T>().set_local_element(0,
typename T::value_type()));
77 decltype(std::declval<T const>().partitioners_are_compatible(
78 std::declval<Utilities::MPI::Partitioner>()));
89 using begin_t =
decltype(std::declval<T const>().begin());
100 decltype(std::declval<T const>().shared_vector_data());
102 template <
typename T>
113 template <
typename T,
typename Number>
116 static const bool value =
120 std::is_same<typename T::value_type, Number>::value;
124 template <
typename T,
typename Number>
139 template <
typename T>
141 decltype(std::declval<T const>().update_ghost_values_start(0));
143 template <
typename T>
151 template <
typename T>
155 template <
typename T>
165 template <
typename T>
173 template <
typename T>
176 template <
typename T>
188 template <
class T,
class IsSerialVectorNotSpecialized =
void>
190 std::integral_constant<bool, is_serial_vector<T>::value>;
197 template <
class VectorType>
204 template <
class VectorType>
206 decltype(std::enable_if_t<is_serial_vector<VectorType>::value,
int>());
213 template <
class VectorType>
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE