Replace ::value and ::type with _v and _t suffixes (#1885)

This commit is contained in:
Tyler Veness
2019-09-13 20:14:37 -07:00
committed by Peter Johnson
parent a5650b9439
commit 1d8c4d016f
8 changed files with 40 additions and 43 deletions

View File

@@ -22,7 +22,7 @@ struct vec_type_helper {
template <typename... Args>
struct vec_type_helper<void, Args...> {
using type = typename std::common_type<Args...>::type;
using type = typename std::common_type_t<Args...>;
};
template <typename T, typename... Args>
@@ -33,14 +33,12 @@ struct all_constructible_and_convertible : std::true_type {};
template <typename T, typename First, typename... Rest>
struct all_constructible_and_convertible<T, First, Rest...>
: std::conditional<std::is_constructible<T, First>::value &&
std::is_convertible<First, T>::value,
all_constructible_and_convertible<T, Rest...>,
std::false_type>::type {};
: std::conditional_t<
std::is_constructible_v<T, First> && std::is_convertible_v<First, T>,
all_constructible_and_convertible<T, Rest...>, std::false_type> {};
template <typename T, typename... Args,
typename std::enable_if<!std::is_trivially_copyable<T>::value,
int>::type = 0>
typename std::enable_if_t<!std::is_trivially_copyable_v<T>, int> = 0>
std::vector<T> make_vector_impl(Args&&... args) {
std::vector<T> vec;
vec.reserve(sizeof...(Args));
@@ -50,19 +48,18 @@ std::vector<T> make_vector_impl(Args&&... args) {
}
template <typename T, typename... Args,
typename std::enable_if<std::is_trivially_copyable<T>::value,
int>::type = 0>
typename std::enable_if_t<std::is_trivially_copyable_v<T>, int> = 0>
std::vector<T> make_vector_impl(Args&&... args) {
return std::vector<T>{std::forward<Args>(args)...};
}
} // namespace detail
template <typename T = void, typename... Args,
typename V = detail::vec_type_helper_t<T, Args...>,
typename std::enable_if<
detail::all_constructible_and_convertible<V, Args...>::value,
int>::type = 0>
template <
typename T = void, typename... Args,
typename V = detail::vec_type_helper_t<T, Args...>,
typename std::enable_if_t<
detail::all_constructible_and_convertible<V, Args...>::value, int> = 0>
std::vector<V> make_vector(Args&&... args) {
return detail::make_vector_impl<V>(std::forward<Args>(args)...);
}