27 Aralık 2019 Cuma

std::integral_constant Yapısı

Örnek
Elimizde şöyle bir kod olsun. Bu kod belirtilen std::vector'ün kaç boyutlu(dimensin) olduğunu bulur.
#include <vector>
#include <type_traits>

template<typename T>
struct dimensions : std::integral_constant<std::size_t, 0> {};

template<typename T>
struct dimensions<std::vector<T>> : std::integral_constant<std::size_t,
  1 + dimensions<T>::value> {};

template<typename T>
inline constexpr std::size_t dimensions_v = dimensions<T>::value; // (C++17)
Şöyle yaparız.
dimensions<vector<vector<vector<int>>>>::value; // 3
// OR
dimensions_v<vector<vector<vector<int>>>>; // also 3 (C++17)


Hiç yorum yok:

Yorum Gönder