This is an archive of the discontinued LLVM Phabricator instance.

[libc++] [D2358R0] ADL-proof `projected`

Authored by ldionne on Feb 4 2022, 12:16 PM.


Group Reviewers
Restricted Project

This implements D2538R0 "ADL-proof std::projected", just to prove
that it works.

Notice that because Holder<Incomplete> is _possible_ to complete,
but _unsafe_ to complete, that means that Holder<Incomplete>*
is basically not an iterator and it's not even safe to ask if
input_iterator<Holder<Incomplete>*> because that _will_ necessarily
complete the type. So it's totally expected that we still cannot
safely ask e.g.

static_assert(std::indirect_unary_predicate<bool(&)(Holder<Incomplete>&), Holder<Incomplete>*>);

or even

static_assert(!std::indirect_unary_predicate<int, Holder<Incomplete>*>);

Diff Detail

Event Timeline

Quuxplusone requested review of this revision.Feb 4 2022, 12:16 PM
Quuxplusone created this revision.
Herald added 1 blocking reviewer(s): Restricted Project. · View Herald TranscriptFeb 4 2022, 12:16 PM
Quuxplusone planned changes to this revision.Feb 4 2022, 12:16 PM
ldionne commandeered this revision.Sep 5 2023, 1:26 PM
ldionne added a reviewer: Quuxplusone.
ldionne added a subscriber: ldionne.

[Github PR transition cleanup]

Abandoning in favor of

Herald added a project: Restricted Project. · View Herald TranscriptSep 5 2023, 1:26 PM
ldionne abandoned this revision.Sep 5 2023, 1:26 PM