This is an archive of the discontinued LLVM Phabricator instance.

[libcxx] Allow declaration of map and multimap iterator with incomplete mapped type.
ClosedPublic

Authored by EricWF on Feb 20 2015, 4:23 AM.

Details

Summary

This lets one create types that are aware of their location inside an associative container, like this:

class A {

std::map<int, A>::iterator it;

};

Diff Detail

Repository
rL LLVM

Event Timeline

eugenis updated this revision to Diff 20390.Feb 20 2015, 4:23 AM
eugenis retitled this revision from to [libcxx] Allow declaration of map and multimap iterator with incomplete mapped type..
eugenis updated this object.
eugenis edited the test plan for this revision. (Show Details)
eugenis added reviewers: EricWF, mclow.lists.
eugenis set the repository for this revision to rL LLVM.
eugenis added a subscriber: Unknown Object (MLST).
eugenis updated this revision to Diff 20393.Feb 20 2015, 6:08 AM

Another attempt that, hopefully, does not change the mangling of map::iterator.
Btw, how do I test that?

EricWF commandeered this revision.Feb 20 2015, 6:47 AM
EricWF edited reviewers, added: eugenis; removed: EricWF.

I'm hijacking this revision to fix the ABI break in the patch.

EricWF updated this revision to Diff 20395.Feb 20 2015, 6:47 AM
EricWF removed rL LLVM as the repository for this revision.

Remove extra template parameters from maps iterator types. Get the key value types a different way.

eugenis edited edge metadata.Feb 26 2015, 3:16 AM

ping
Any objections or comments?

mclow.lists accepted this revision.Mar 3 2015, 10:58 AM
mclow.lists edited edge metadata.

This looks fine to me.

include/map
754

Is this just a line-wrap change - or am I missing some functionality that has changed?

This revision is now accepted and ready to land.Mar 3 2015, 10:58 AM
EricWF closed this revision.Mar 3 2015, 12:12 PM

Commited as r231119.

include/map
754

Looks like a line-wrap to me.