vari
Loading...
Searching...
No Matches
concept.h
1
23#pragma once
24
25#include "vari/bits/typelist.h"
26
27namespace vari
28{
29
30template < typename FromTL, typename ToTL >
31concept vconvertible_to = is_subset_v< FromTL, ToTL > || is_subset_v< FromTL const, ToTL >;
32
33template < typename U, typename TL >
34concept vconvertible_type = contains_type_v< U, TL > || contains_type_v< U const, TL >;
35
36template < typename Deleter >
37concept copy_constructible_deleter =
38 std::is_lvalue_reference_v< Deleter > ||
39 ( !std::is_reference_v< Deleter > && std::is_nothrow_copy_constructible_v< Deleter > );
40
41template < typename Deleter >
42concept move_constructible_deleter =
43 !std::is_lvalue_reference_v< Deleter > && std::is_nothrow_move_constructible_v< Deleter >;
44
45template < typename FromDeleter, typename ToDeleter >
46concept convertible_deleter = std::is_nothrow_constructible_v< ToDeleter, FromDeleter >;
47
48template < typename V, typename TL >
49concept variadic_with = is_subset_v< TL, typename V::types >;
50
51template < typename V, typename T >
52concept variadic_with_type = contains_type_v< T, typename V::types >;
53
54} // namespace vari
MIT License.
Definition: dispatch.h:32