Skip to content

Commit 1b659be

Browse files
committed
fable: Use C++17 type traits with _t and _v suffixes
1 parent 2457a22 commit 1b659be

File tree

8 files changed

+19
-21
lines changed

8 files changed

+19
-21
lines changed

fable/include/fable/enum.hpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -149,22 +149,22 @@ struct EnumSerializerImpl<T, false> {
149149
}
150150
};
151151

152-
template <typename T, std::enable_if_t<std::is_enum<T>::value, int> = 0>
152+
template <typename T, std::enable_if_t<std::is_enum_v<T>, int> = 0>
153153
const std::map<T, std::string>& enum_serialization() {
154154
return EnumSerializerImpl<T, has_enum_serializer<T>::value>::serialization_impl();
155155
}
156156

157-
template <typename T, std::enable_if_t<std::is_enum<T>::value, int> = 0>
157+
template <typename T, std::enable_if_t<std::is_enum_v<T>, int> = 0>
158158
const std::map<std::string, T>& enum_deserialization() {
159159
return EnumSerializerImpl<T, has_enum_serializer<T>::value>::deserialization_impl();
160160
}
161161

162-
template <typename T, std::enable_if_t<std::is_enum<T>::value, int> = 0>
162+
template <typename T, std::enable_if_t<std::is_enum_v<T>, int> = 0>
163163
std::string to_string(T x) {
164164
return enum_serialization<T>().at(x);
165165
}
166166

167-
template <typename T, std::enable_if_t<std::is_enum<T>::value, int> = 0>
167+
template <typename T, std::enable_if_t<std::is_enum_v<T>, int> = 0>
168168
T from_string(const std::string& s) {
169169
return enum_deserialization<T>().at(s);
170170
}

fable/include/fable/schema.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ class Schema : public schema::Interface {
200200
Schema(std::string&& desc, schema::BoxVec&& props);
201201

202202
// Interface
203-
template <typename T, std::enable_if_t<std::is_base_of<schema::Interface, T>::value, int> = 0>
203+
template <typename T, std::enable_if_t<std::is_base_of_v<schema::Interface, T>, int> = 0>
204204
Schema(const T& value) : impl_(value.clone()) {} // NOLINT(runtime/explicit)
205205
Schema(schema::Interface* i) : impl_(i) { assert(impl_); } // NOLINT(runtime/explicit)
206206
Schema(std::shared_ptr<schema::Interface> i) : impl_(std::move(i)) { // NOLINT(runtime/explicit)

fable/include/fable/schema/confable.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class Confable;
3737

3838
namespace schema {
3939

40-
template <typename T, std::enable_if_t<std::is_base_of<Confable, T>::value, int> = 0>
40+
template <typename T, std::enable_if_t<std::is_base_of_v<Confable, T>, int> = 0>
4141
class FromConfable : public Base<FromConfable<T>> {
4242
public: // Types and Constructors
4343
using Type = T;

fable/include/fable/schema/duration.hpp

+4-6
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,15 @@ class Duration : public Base<Duration<T, Period>> {
3939
public: // Types and Constructors
4040
using Type = std::chrono::duration<T, Period>;
4141

42-
template <typename X = T,
43-
std::enable_if_t<std::is_integral<X>::value && std::is_unsigned<X>::value, int> = 0>
42+
template <typename X = T, std::enable_if_t<std::is_integral_v<X> && std::is_unsigned_v<X>, int> = 0>
4443
Duration(Type* ptr, std::string&& desc)
4544
: Base<Duration<T, Period>>(JsonType::number_unsigned, std::move(desc)), ptr_(ptr) {}
4645

47-
template <typename X = T,
48-
std::enable_if_t<std::is_integral<X>::value && std::is_signed<X>::value, int> = 0>
46+
template <typename X = T, std::enable_if_t<std::is_integral_v<X> && std::is_signed_v<X>, int> = 0>
4947
Duration(Type* ptr, std::string&& desc)
50-
: Base<Duration<T, Period>>(JsonType::number_integer, std::move(desc)), ptr_(ptr) {}
48+
: Base<Duration<T, Period>>(JsonType::number_integer, std::move(desc)), ptr_(ptr) {}
5149

52-
template <typename X = T, std::enable_if_t<std::is_floating_point<X>::value, int> = 0>
50+
template <typename X = T, std::enable_if_t<std::is_floating_point_v<X>, int> = 0>
5351
Duration(Type* ptr, std::string&& desc)
5452
: Base<Duration<T, Period>>(JsonType::number_float, std::move(desc)), ptr_(ptr) {}
5553

fable/include/fable/schema/factory.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,8 @@ class FactoryBase : public Base<CRTP> {
229229
* Most types inheriting from `Confable` will fulfill these requirements.
230230
*/
231231
template <typename F,
232-
std::enable_if_t<(std::is_default_constructible<F>::value &&
233-
std::is_convertible<std::unique_ptr<F>, T>::value),
232+
std::enable_if_t<(std::is_default_constructible_v<F> &&
233+
std::is_convertible_v<std::unique_ptr<F>, T>),
234234
int> = 0>
235235
void add_default_factory(const std::string& key) {
236236
add_factory(key, make_prototype<F>().get_confable_schema(), [](const Conf& c) -> T {

fable/include/fable/schema/interface.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ class Interface {
254254
* void foobar(S schema);
255255
*/
256256
template <typename S>
257-
using enable_if_schema_t = std::enable_if_t<std::is_base_of<Interface, S>::value>;
257+
using enable_if_schema_t = std::enable_if_t<std::is_base_of_v<Interface, S>>;
258258

259259
// ------------------------------------------------------------------------- //
260260

@@ -444,7 +444,7 @@ class Base : public Interface {
444444
* void foobar(T x);
445445
*/
446446
template <typename T>
447-
using enable_if_confable_t = std::enable_if_t<std::is_base_of<Confable, T>::value>;
447+
using enable_if_confable_t = std::enable_if_t<std::is_base_of_v<Confable, T>>;
448448

449449
/**
450450
* Use SFINAE mechanism to disable a template function when S is a subclass
@@ -455,7 +455,7 @@ using enable_if_confable_t = std::enable_if_t<std::is_base_of<Confable, T>::valu
455455
* void foobar(T x);
456456
*/
457457
template <typename T>
458-
using enable_if_not_confable_t = std::enable_if_t<!std::is_base_of<Confable, T>::value>;
458+
using enable_if_not_confable_t = std::enable_if_t<!std::is_base_of_v<Confable, T>>;
459459

460460
template <typename T, typename S = std::string, std::enable_if_t<std::is_base_of_v<Confable, T>, int> = 0>
461461
auto make_prototype(S&& desc = "");

fable/include/fable/schema/number.hpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,15 +40,15 @@ class Number : public Base<Number<T>> {
4040
public: // Types and Constructors
4141
using Type = T;
4242

43-
template <typename X = T, std::enable_if_t<std::is_integral<X>::value && std::is_unsigned<X>::value, int> = 0>
43+
template <typename X = T, std::enable_if_t<std::is_integral_v<X> && std::is_unsigned_v<X>, int> = 0>
4444
Number(Type* ptr, std::string&& desc)
4545
: Base<Number<T>>(JsonType::number_unsigned, std::move(desc)), ptr_(ptr) {}
4646

47-
template <typename X = T, std::enable_if_t<std::is_integral<X>::value && std::is_signed<X>::value, int> = 0>
47+
template <typename X = T, std::enable_if_t<std::is_integral_v<X> && std::is_signed_v<X>, int> = 0>
4848
Number(Type* ptr, std::string&& desc)
4949
: Base<Number<T>>(JsonType::number_integer, std::move(desc)), ptr_(ptr) {}
5050

51-
template <typename X = T, std::enable_if_t<std::is_floating_point<X>::value, int> = 0>
51+
template <typename X = T, std::enable_if_t<std::is_floating_point_v<X>, int> = 0>
5252
Number(Type* ptr, std::string&& desc)
5353
: Base<Number<T>>(JsonType::number_float, std::move(desc)), ptr_(ptr) {}
5454

fable/include/fable/schema/struct.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ template <typename S = Box>
5555
using PropertyList = std::initializer_list<std::pair<std::string const, S>>;
5656

5757
template <typename T, typename S = Box>
58-
using enable_if_property_list_t = std::enable_if_t<std::is_same<PropertyList<S>, T>::value>;
58+
using enable_if_property_list_t = std::enable_if_t<std::is_same_v<PropertyList<S>, T>>;
5959

6060
/**
6161
* Struct maintains a key-value mapping, where the list of keys is usually

0 commit comments

Comments
 (0)