15#ifndef dealii_memory_consumption_h
16#define dealii_memory_consumption_h
94 inline std::enable_if_t<std::is_fundamental_v<T>, std::size_t>
103 template <
typename T>
104 inline std::enable_if_t<!(std::is_fundamental_v<T> || std::is_pointer_v<T>),
121 template <
typename T>
129 template <
typename T, std::
size_t w
idth>
167 template <
typename T>
191 template <
typename T, std::
size_t N>
203 template <
typename T,
int N>
221 template <
typename A,
typename B>
229 template <
typename A>
242 template <
typename T>
251 template <
typename T>
260 template <
typename T>
271 template <
typename T>
272 inline std::enable_if_t<std::is_fundamental_v<T>, std::size_t>
283 if (
string ==
nullptr)
289 return sizeof(char) * (strlen(
string) + 1);
295 template <
typename T>
299 return sizeof(std::complex<T>);
304 template <
typename T, std::
size_t w
idth>
316 return sizeof(s) + s.size();
321 template <
typename T>
326 if (std::is_fundamental_v<T> || std::is_pointer_v<T>)
328 return v.capacity() *
sizeof(T) +
sizeof(v);
332 std::size_t mem =
sizeof(std::vector<T>);
333 for (
unsigned int i = 0; i < v.size(); ++i)
337 mem += (v.capacity() - v.size()) *
sizeof(T);
344 template <
typename T, std::
size_t N>
349 if (std::is_fundamental_v<T> || std::is_pointer_v<T>)
356 for (std::size_t i = 0; i != N; ++i)
364 template <
typename T,
int N>
369 for (
unsigned int i = 0; i < N; ++i)
379 return v.capacity() / 8 +
sizeof(v);
384 template <
typename A,
typename B>
393 template <
typename A>
418 template <
typename T>
427 template <
typename T>
431 return sizeof(std::shared_ptr<T>);
436 template <
typename T>
440 return sizeof(std::unique_ptr<T>);
445 template <
typename T>
446 inline std::enable_if_t<!(std::is_fundamental_v<T> || std::is_pointer_v<T>),
450 return t.memory_consumption();
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
std::enable_if_t< std::is_fundamental_v< T >, std::size_t > memory_consumption(const T &t)