File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11export module CppUtils.Type.Concept;
22
33import std;
4+ export import CppUtils.Type.Specialization;
45
56export namespace CppUtils::Type
67{
@@ -22,15 +23,6 @@ export namespace CppUtils::Type
2223 { std::hash<std::remove_cvref_t<T>>{}(a) } -> std::convertible_to<std::size_t>;
2324 };
2425
25- template<class T, template<class...> class IncompleteType>
26- inline constexpr auto isSpecializationOf = false;
27-
28- template<template<class...> class IncompleteType, class... Args>
29- inline constexpr auto isSpecializationOf<IncompleteType<Args...>, IncompleteType> = true;
30-
31- template<class T, template<class...> class IncompleteType>
32- concept Specializes = isSpecializationOf<std::remove_cvref_t<T>, IncompleteType>;
33-
3426 template<class T>
3527 concept Function = std::is_function_v<T>;
3628
Original file line number Diff line number Diff line change 1+ export module CppUtils.Type.Specialization;
2+
3+ import std;
4+
5+ export namespace CppUtils::Type
6+ {
7+ template<class T, template<class...> class>
8+ inline constexpr auto isSpecializationOfTypes = false;
9+
10+ template<template<class...> class IncompleteType, class... Args>
11+ inline constexpr auto isSpecializationOfTypes<IncompleteType<Args...>, IncompleteType> = true;
12+
13+ template<class T, template<class...> class IncompleteType>
14+ concept Specializes = isSpecializationOfTypes<std::remove_cvref_t<T>, IncompleteType>;
15+
16+ template<class T, template<auto...> class>
17+ inline constexpr auto isSpecializationOfValues = false;
18+
19+ template<template<auto...> class IncompleteType, auto... Args>
20+ inline constexpr auto isSpecializationOfValues<IncompleteType<Args...>, IncompleteType> = true;
21+
22+ template<class T, template<auto...> class IncompleteType>
23+ concept SpecializesValue = isSpecializationOfValues<std::remove_cvref_t<T>, IncompleteType>;
24+ }
You can’t perform that action at this time.
0 commit comments