feat(templates): add TOptional and the corresponding testing

This commit is contained in:
2022-03-13 23:18:07 +08:00
parent c2aecef3dd
commit 8a3b089648
7 changed files with 240 additions and 102 deletions

View File

@ -12,9 +12,9 @@ constexpr auto GetData(T&& Container)
return Container.GetData();
}
template <typename T, size_t N> constexpr T* GetData(T(&Container)[N]) { return Container; }
template <typename T, size_t N> constexpr T* GetData(T(&& Container)[N]) { return Container; }
template <typename T, size_t N> constexpr const T* GetData(const T(&Container)[N]) { return Container; }
template <typename T, size_t N> constexpr T* GetData( T(& Container)[N]) { return Container; }
template <typename T, size_t N> constexpr T* GetData( T(&& Container)[N]) { return Container; }
template <typename T, size_t N> constexpr const T* GetData(const T(& Container)[N]) { return Container; }
template <typename T, size_t N> constexpr const T* GetData(const T(&& Container)[N]) { return Container; }
template <typename T> requires requires(T Container) { Container.data(); }
@ -29,9 +29,9 @@ constexpr auto GetNum(T&& Container)
return Container.Num();
}
template <typename T, size_t N> constexpr size_t GetNum(T(&Container)[N]) { return N; }
template <typename T, size_t N> constexpr size_t GetNum(T(&& Container)[N]) { return N; }
template <typename T, size_t N> constexpr size_t GetNum(const T(&Container)[N]) { return N; }
template <typename T, size_t N> constexpr size_t GetNum( T(& Container)[N]) { return N; }
template <typename T, size_t N> constexpr size_t GetNum( T(&& Container)[N]) { return N; }
template <typename T, size_t N> constexpr size_t GetNum(const T(& Container)[N]) { return N; }
template <typename T, size_t N> constexpr size_t GetNum(const T(&& Container)[N]) { return N; }
template <typename T> requires requires(T Container) { Container.size(); }