farm-ng-core
concept_utils.h
Go to the documentation of this file.
1 // Copyright 2022, farm-ng inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #pragma once
16 
17 #include <initializer_list>
18 
19 namespace farm_ng {
20 
21 template <class TDerived, class TBase>
22 concept DerivedFrom = std::is_base_of_v<TBase, TDerived>;
23 
24 template <class TT, class TU>
25 concept SameAs = std::is_same_v<TT, TU>;
26 
27 template <class TT>
28 concept EnumType = std::is_enum_v<TT>;
29 
30 template <typename TT>
31 concept Arithmetic = std::is_arithmetic_v<TT>;
32 
33 } // namespace farm_ng
farm_ng
Definition: backtrace.cpp:102
farm_ng::EnumType
concept EnumType
Definition: concept_utils.h:28
farm_ng::SameAs
concept SameAs
Definition: concept_utils.h:25
farm_ng::Arithmetic
concept Arithmetic
Definition: concept_utils.h:31
farm_ng::DerivedFrom
concept DerivedFrom
Definition: concept_utils.h:22