On 1 June 2017 at 18:13, Jonathan Wakely <jwak...@redhat.com> wrote: > On 30/05/17 02:16 -0700, Tim Shen via libstdc++ wrote: >> >> diff --git a/libstdc++-v3/include/std/variant >> b/libstdc++-v3/include/std/variant >> index b9824a5182c..f81b815af09 100644 >> --- a/libstdc++-v3/include/std/variant >> +++ b/libstdc++-v3/include/std/variant >> @@ -290,6 +290,53 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION >> __ref_cast<_Tp>(__t)); >> } >> >> + template<typename... _Types> >> + struct _Traits >> + { >> + static constexpr bool is_default_constructible_v = >> + is_default_constructible_v<typename _Nth_type<0, >> _Types...>::type>; >> + static constexpr bool is_copy_constructible_v = >> + __and_<is_copy_constructible<_Types>...>::value; >> + static constexpr bool is_move_constructible_v = >> + __and_<is_move_constructible<_Types>...>::value; >> + static constexpr bool is_copy_assignable_v = >> + is_copy_constructible_v && is_move_constructible_v >> + && __and_<is_copy_assignable<_Types>...>::value; >> + static constexpr bool is_move_assignable_v = >> + is_move_constructible_v >> + && __and_<is_move_assignable<_Types>...>::value; > > > It seems strange to me that these ones end with _v but the following > ones don't. Could we make them all have no _v suffix?
Seems to me worth considering to rather make all of them have a _v suffix. :) > >> + static constexpr bool is_dtor_trivial = >> + __and_<is_trivially_destructible<_Types>...>::value; They all seem to be shortcuts for something::value, so it seems to me logical to have them all be _v.