On Jul 15, 2013, at 4:43 PM, Howard Hinnant <[email protected]> wrote:

> 
> On Jul 15, 2013, at 5:19 PM, Marshall Clow <[email protected]> wrote:
> 
>> This is the second step towards fixing 
>> http://llvm.org/bugs/show_bug.cgi?id=16599
>> 
>> Make std::pair's constructors and comparison operators (and make_pair) 
>> constexpr.
> 
> This is looking great!
> 
> I've got just a few minor tweaks, and one big favor... ;-)
> 
> While you're in the pair neighborhood, it would be great if you could do a 
> drive-by fix on the pair copy and move constructors concerning making them = 
> default when _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS is not defined, but keeping 
> the current definitions when _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS is defined.

Done.

> Otherwise I can find nothing at all to complain about in <utility>.
> 
> On the tests I think we need to test every constructor we're marking 
> constexpr.  The easiest way to ensure complete coverage is when you think you 
> have it, comment out the constexpr on the constructors one by one and make 
> sure you have a failing test.  utility/pairs/pairs.pair has an attempted 
> test/per constructor.  We should put a constexpr test in each of those files 
> targeting the relevant constructor.

Done, except for one constructor:
    template<class _Tuple,
             class = typename enable_if<__tuple_convertible<_Tuple, 
pair>::value>::type>
        _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
        pair(_Tuple&& __p)

We don't currently have any tests for this because I haven't done the constexpr 
stuff for tuple yet.

> The make_pair test should go in utility/pairs/pair.spec/make_pair.pass.cpp.  
> And the comparison operator tests should go in 
> utility/pairs/pair.spec/comparison.pass.cpp.  This will add some duplication 
> in the tests, but that way we can find all of the relevant tests when we have 
> a bug report in this area a year from now.

I think I've got these all in the right place now.

Updated patch attached.

-- Marshall

Marshall Clow     Idio Software   <mailto:[email protected]>

A.D. 1517: Martin Luther nails his 95 Theses to the church door and is promptly 
moderated down to (-1, Flamebait).
        -- Yu Suzuki

Attachment: pair-constexpr-2.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to