VIPRA Documentation
Loading...
Searching...
No Matches
template_specialization.hpp
1#pragma once
2
3#include <map>
4#include <type_traits>
5
6namespace VIPRA::Util {
7template <typename type_t, template <typename...> class ref_t>
8
13// NOLINTNEXTLINE
14struct is_specialization : std::false_type {};
15
16template <template <typename...> class ref_t, typename... arg_ts>
17struct is_specialization<ref_t<arg_ts...>, ref_t> : std::true_type {};
18
19template <typename>
21
28template <template <typename...> typename template_t, typename inner_t>
29struct get_specialization_internal<template_t<inner_t>> {
30 using type = inner_t;
31};
32
33template <typename>
35
42template <typename k_t, typename v_t>
43struct get_map_specialization<std::map<k_t, v_t>> {
44 using key_t = k_t;
45 using value_t = v_t;
46};
47
48} // namespace VIPRA::Util
Definition template_specialization.hpp:34
Definition template_specialization.hpp:20
Utility struct that gets whether a type is a specialization of another templated type.
Definition template_specialization.hpp:14