#pragma once #include #include namespace nall { using std::add_const; using std::decay; using std::declval; using std::false_type; using std::forward; using std::initializer_list; using std::is_array; using std::is_base_of; using std::is_function; using std::is_integral; using std::is_same; using std::move; using std::nullptr_t; using std::remove_extent; using std::remove_reference; using std::swap; using std::true_type; } namespace nall { template struct expression { static constexpr bool value = C; }; } namespace nall { namespace traits { enum class enable_type {}; enum class disable_type {}; template struct enable_if { using type = T; }; template struct enable_if {}; template struct disable_if { using type = T; }; template struct disable_if {}; } template using enable_if = typename traits::enable_if::type; template using disable_if = typename traits::disable_if::type; } namespace nall { namespace traits { template struct type_if { using type = T; }; template struct type_if { using type = F; }; } template using type_if = typename traits::type_if::type; }