Implements parts of:
- P0898R3 Standard Library Concepts
 - P1754 Rename concepts to standard_case for C++20, while we still can
 
Depends on D96660
Paths 
  |  Differential  D96683  
[libcxx] adds concept `std::common_with` ClosedPublic Authored by cjdb on Feb 14 2021, 8:01 PM. 
Details 
 Summary Implements parts of: 
 Depends on D96660 
Diff Detail 
 Event Timeline
 
 
 cjdb marked an inline comment as done. Comment Actionsapplies some feedback 
 Comment Actions LGTM except nitpick about formatting in the tests. No need to wait for my re-review. 
 This revision is now accepted and ready to land.Feb 25 2021, 10:32 AM Closed by commit rGf893312c1a6a: [libcxx] adds concept `std::common_with` (authored by cjdb).  ·  Explain WhyMar 3 2021, 8:31 PM This revision was automatically updated to reflect the committed changes. 
Revision Contents 
 
 
Diff 324177 libcxx/include/concepts
 libcxx/test/std/concepts/lang/common.compile.pass.cpp
 
  | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I see this follows the spec closely, but I'm curious to understand. Here, I would have expected the check to be:
common_reference_with< common_type_t<_Tp, _Up> const&, common_reference_t< const _Tp&, const _Up&>>;instead (with add_lvalue_reference_t simplified naively for legibility). In other words, why are we looking for a common reference between the non-const common type and the common-ref between the const-qualified types? I'm sure that'll highlight a misunderstanding I have about the concept.