LWG Issue 2141: common type

Richard Smith richard at metafoo.co.uk
Mon Oct 7 16:05:13 PDT 2013


On Mon, Oct 7, 2013 at 3:53 PM, Marshall Clow <mclow.lists at gmail.com> wrote:

> On Oct 7, 2013, at 1:26 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>
> On Sun, Oct 6, 2013 at 9:37 AM, Marshall Clow <mclow.lists at gmail.com>wrote:
>
>> Ref: http://cplusplus.github.io/LWG/lwg-defects.html#2141
>>
>> Fix common_type to match the suggested implementation in the standard.
>> Add tests to make sure it (now) does what it should.
>>
>> Also, a drive by fix on the tests for is_trivially_copyable. Clang
>> recently fixed a bug in the intrinsic that libc++ uses for this type_trait,
>> and this exposed an error in the test suite.
>>
>> Note that most of the change in <type_traits> is from hoisting the
>> definition of std::decay from the end of the file to somewhere closer to
>> the front.
>> That's just a movement of source code - there are no changes to decay.
>>
>
> You don't seem to have any test coverage outside C++1y mode. Could you
> move the tests out of the _LIBCPP_STD_VER > 11 block and switch them from
> common_type_t to common_type<...>::type ?
>
>
>
> Was this what you had in mind?
>

Yep =) Thanks!


> Index: test/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp
> ===================================================================
> --- test/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp (revision
> 192102)
> +++ test/utilities/meta/meta.trans/meta.trans.other/common_type.pass.cpp (working
> copy)
> @@ -18,10 +18,24 @@
>      static_assert((std::is_same<std::common_type<int>::type,
> int>::value), "");
>      static_assert((std::is_same<std::common_type<char>::type,
> char>::value), "");
>  #if _LIBCPP_STD_VER > 11
> -    static_assert((std::is_same<std::common_type_t<int>, int>::value),
> "");
> +    static_assert((std::is_same<std::common_type_t<int>,   int>::value),
> "");
>      static_assert((std::is_same<std::common_type_t<char>, char>::value),
> "");
>  #endif
>
> +    static_assert((std::is_same<std::common_type<
> int>::type, int>::value), "");
> +    static_assert((std::is_same<std::common_type<const
>  int>::type, int>::value), "");
> +    static_assert((std::is_same<std::common_type<      volatile
> int>::type, int>::value), "");
> +    static_assert((std::is_same<std::common_type<const volatile
> int>::type, int>::value), "");
> +
> +    static_assert((std::is_same<std::common_type<int,
> int>::type, int>::value), "");
> +    static_assert((std::is_same<std::common_type<int,     const
> int>::type, int>::value), "");
> +
> +    static_assert((std::is_same<std::common_type<long,       const
> int>::type, long>::value), "");
> +    static_assert((std::is_same<std::common_type<const long,
> int>::type, long>::value), "");
> +    static_assert((std::is_same<std::common_type<long,    volatile
> int>::type, long>::value), "");
> +    static_assert((std::is_same<std::common_type<volatile long,
>  int>::type, long>::value), "");
> +    static_assert((std::is_same<std::common_type<const long, const
> int>::type, long>::value), "");
> +
>      static_assert((std::is_same<std::common_type<double, char>::type,
> double>::value), "");
>      static_assert((std::is_same<std::common_type<short, char>::type,
> int>::value), "");
>  #if _LIBCPP_STD_VER > 11
>
> -- Marshall
>
> Marshall Clow     Idio Software   <mailto:mclow.lists at gmail.com<mclow.lists at gmail.com>
> >
>
> A.D. 1517: Martin Luther nails his 95 Theses to the church door and is
> promptly moderated down to (-1, Flamebait).
>         -- Yu Suzuki
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131007/b81d813d/attachment.html>


More information about the cfe-commits mailing list