{"action":"closed","issue":{"url":"https://api.github.com/repos/CaseyCarter/stl2/issues/8","labels_url":"https://api.github.com/repos/CaseyCarter/stl2/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/CaseyCarter/stl2/issues/8/comments","events_url":"https://api.github.com/repos/CaseyCarter/stl2/issues/8/events","html_url":"https://github.com/CaseyCarter/stl2/issues/8","id":92771320,"number":8,"title":"Permutable should require Swappable?","user":{"login":"CaseyCarter","id":456873,"avatar_url":"https://avatars.githubusercontent.com/u/456873?v=3","gravatar_id":"","url":"https://api.github.com/users/CaseyCarter","html_url":"https://github.com/CaseyCarter","followers_url":"https://api.github.com/users/CaseyCarter/followers","following_url":"https://api.github.com/users/CaseyCarter/following{/other_user}","gists_url":"https://api.github.com/users/CaseyCarter/gists{/gist_id}","starred_url":"https://api.github.com/users/CaseyCarter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CaseyCarter/subscriptions","organizations_url":"https://api.github.com/users/CaseyCarter/orgs","repos_url":"https://api.github.com/users/CaseyCarter/repos","events_url":"https://api.github.com/users/CaseyCarter/events{/privacy}","received_events_url":"https://api.github.com/users/CaseyCarter/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-07-03T01:30:20Z","updated_at":"2015-11-14T07:23:43Z","closed_at":"2015-11-14T07:23:43Z","body":"Or Movable should require Swappable, but Swappable requires Movable...\r\n\r\n~~In any case, algorithms may use `swap`, but it's a customization point. We need to ensure semantic constraints apply equally to whichever `swap` is invoked.~~ N5460 fixes this: algorithms invoke `ranges::swap`, and `ranges::swap` requires user-defined functions it finds by ADL to \"exchange the values\" denoted by the arguments. (I should probably replace \"exchange the values\" with the semantics as I defined them for `Swappable`: Given `a` equal to `b` and `c` equal to `d`, after `swap(a, c)` or `swap(c, a)`, `a` equals `d` and `b` equals `c`.)"}}