{"action":"created","comment":{"url":"https://api.github.com/repos/lsst/geom/pulls/comments/199942934","pull_request_review_id":134160969,"id":199942934,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5OTk0MjkzNA==","diff_hunk":"@@ -154,7 +154,7 @@ class ExtentBase : public CoordinateBase<Extent<T, N>, T, N> {\n     //@}","path":"include/lsst/geom/Extent.h","position":1,"original_position":1,"commit_id":"2aca9068d654926b407f7996a6921d1e83e3aa71","original_commit_id":"2aca9068d654926b407f7996a6921d1e83e3aa71","user":{"login":"kfindeisen","id":8508260,"node_id":"MDQ6VXNlcjg1MDgyNjA=","avatar_url":"https://avatars3.githubusercontent.com/u/8508260?v=4","gravatar_id":"","url":"https://api.github.com/users/kfindeisen","html_url":"https://github.com/kfindeisen","followers_url":"https://api.github.com/users/kfindeisen/followers","following_url":"https://api.github.com/users/kfindeisen/following{/other_user}","gists_url":"https://api.github.com/users/kfindeisen/gists{/gist_id}","starred_url":"https://api.github.com/users/kfindeisen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kfindeisen/subscriptions","organizations_url":"https://api.github.com/users/kfindeisen/orgs","repos_url":"https://api.github.com/users/kfindeisen/repos","events_url":"https://api.github.com/users/kfindeisen/events{/privacy}","received_events_url":"https://api.github.com/users/kfindeisen/received_events","type":"User","site_admin":false},"body":"I was hoping to address this after adding the `static_assert` on `N`...\r\n\r\nThis was another case of \"this should always be computable, but the implementation is potentially throwing\". The current implementation constructs a temporary `CoordinateExpr`; I think that requiring static Eigen matrices will make `CoordinateExpr` nothrow-constructible, sidestepping the problem.","created_at":"2018-07-03T20:36:46Z","updated_at":"2018-07-03T20:36:47Z","html_url":"https://github.com/lsst/geom/pull/6#discussion_r199942934","pull_request_url":"https://api.github.com/repos/lsst/geom/pulls/6","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/lsst/geom/pulls/comments/199942934"},"html":{"href":"https://github.com/lsst/geom/pull/6#discussion_r199942934"},"pull_request":{"href":"https://api.github.com/repos/lsst/geom/pulls/6"}},"in_reply_to_id":199307673},"pull_request":{"url":"https://api.github.com/repos/lsst/geom/pulls/6","id":198191306,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk4MTkxMzA2","html_url":"https://github.com/lsst/geom/pull/6","diff_url":"https://github.com/lsst/geom/pull/6.diff","patch_url":"https://github.com/lsst/geom/pull/6.patch","issue_url":"https://api.github.com/repos/lsst/geom/issues/6","number":6,"state":"open","locked":false,"title":"DM-9937: Add noexcept specifiers to applicable methods in afw","user":{"login":"kfindeisen","id":8508260,"node_id":"MDQ6VXNlcjg1MDgyNjA=","avatar_url":"https://avatars3.githubusercontent.com/u/8508260?v=4","gravatar_id":"","url":"https://api.github.com/users/kfindeisen","html_url":"https://github.com/kfindeisen","followers_url":"https://api.github.com/users/kfindeisen/followers","following_url":"https://api.github.com/users/kfindeisen/following{/other_user}","gists_url":"https://api.github.com/users/kfindeisen/gists{/gist_id}","starred_url":"https://api.github.com/users/kfindeisen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kfindeisen/subscriptions","organizations_url":"https://api.github.com/users/kfindeisen/orgs","repos_url":"https://api.github.com/users/kfindeisen/repos","events_url":"https://api.github.com/users/kfindeisen/events{/privacy}","received_events_url":"https://api.github.com/users/kfindeisen/received_events","type":"User","site_admin":false},"body":"This PR adds `noexcept` specifiers to most functions and methods in `lsst::geom`. I have omitted these specifiers in a couple of key cases:\r\n- any method that directly or indirectly uses dynamic memory allocation, or where it might be reasonable to want that in the future. This includes methods that return `vector` or `string` by value.\r\n- any method that could in principle take an invalid input (e.g., anything that takes an index) has been left potentially throwing\r\n- many of the methods in the `Coordinate` hierarchy, such as `Point::getSquaredNorm`, are in principle `noexcept` but currently have a potentially throwing implementation. I've left these methods unmarked to avoid leaking implementation details.\r\n\r\nThe exception specs for classes that use Eigen are based on its policy that Eigen classes only throw `bad_alloc`, and handle all other failure modes using `assert`. I don't know if we want to relax this to allow for non-Eigen implementations in the future.\r\n\r\nNote that we could simplify the exception specs for `CoordinateBase` quite a bit by using a `static_assert` to force it to use statically allocated Eigen vectors. However, there are plausible coordinate types (e.g., `std::complex`) that are not nothrow-copyable, so most `CoordinateBase` and subclass methods would still be conditionally `noexcept` depending on `T`.","created_at":"2018-06-29T01:08:24Z","updated_at":"2018-07-03T20:36:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2d5532d58afdff0ee68461b8f2374c7ea55bcca6","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/lsst/geom/pulls/6/commits","review_comments_url":"https://api.github.com/repos/lsst/geom/pulls/6/comments","review_comment_url":"https://api.github.com/repos/lsst/geom/pulls/comments{/number}","comments_url":"https://api.github.com/repos/lsst/geom/issues/6/comments","statuses_url":"https://api.github.com/repos/lsst/geom/statuses/2aca9068d654926b407f7996a6921d1e83e3aa71","head":{"label":"lsst:tickets/DM-9937","ref":"tickets/DM-9937","sha":"2aca9068d654926b407f7996a6921d1e83e3aa71","user":{"login":"lsst","id":1134504,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMzQ1MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1134504?v=4","gravatar_id":"","url":"https://api.github.com/users/lsst","html_url":"https://github.com/lsst","followers_url":"https://api.github.com/users/lsst/followers","following_url":"https://api.github.com/users/lsst/following{/other_user}","gists_url":"https://api.github.com/users/lsst/gists{/gist_id}","starred_url":"https://api.github.com/users/lsst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lsst/subscriptions","organizations_url":"https://api.github.com/users/lsst/orgs","repos_url":"https://api.github.com/users/lsst/repos","events_url":"https://api.github.com/users/lsst/events{/privacy}","received_events_url":"https://api.github.com/users/lsst/received_events","type":"Organization","site_admin":false},"repo":{"id":23013315,"node_id":"MDEwOlJlcG9zaXRvcnkyMzAxMzMxNQ==","name":"geom","full_name":"lsst/geom","owner":{"login":"lsst","id":1134504,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMzQ1MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1134504?v=4","gravatar_id":"","url":"https://api.github.com/users/lsst","html_url":"https://github.com/lsst","followers_url":"https://api.github.com/users/lsst/followers","following_url":"https://api.github.com/users/lsst/following{/other_user}","gists_url":"https://api.github.com/users/lsst/gists{/gist_id}","starred_url":"https://api.github.com/users/lsst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lsst/subscriptions","organizations_url":"https://api.github.com/users/lsst/orgs","repos_url":"https://api.github.com/users/lsst/repos","events_url":"https://api.github.com/users/lsst/events{/privacy}","received_events_url":"https://api.github.com/users/lsst/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/lsst/geom","description":"Pure-Python spherical geometry for LSST Data Management (will be superseded by sphgeom)","fork":false,"url":"https://api.github.com/repos/lsst/geom","forks_url":"https://api.github.com/repos/lsst/geom/forks","keys_url":"https://api.github.com/repos/lsst/geom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lsst/geom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lsst/geom/teams","hooks_url":"https://api.github.com/repos/lsst/geom/hooks","issue_events_url":"https://api.github.com/repos/lsst/geom/issues/events{/number}","events_url":"https://api.github.com/repos/lsst/geom/events","assignees_url":"https://api.github.com/repos/lsst/geom/assignees{/user}","branches_url":"https://api.github.com/repos/lsst/geom/branches{/branch}","tags_url":"https://api.github.com/repos/lsst/geom/tags","blobs_url":"https://api.github.com/repos/lsst/geom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lsst/geom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lsst/geom/git/refs{/sha}","trees_url":"https://api.github.com/repos/lsst/geom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lsst/geom/statuses/{sha}","languages_url":"https://api.github.com/repos/lsst/geom/languages","stargazers_url":"https://api.github.com/repos/lsst/geom/stargazers","contributors_url":"https://api.github.com/repos/lsst/geom/contributors","subscribers_url":"https://api.github.com/repos/lsst/geom/subscribers","subscription_url":"https://api.github.com/repos/lsst/geom/subscription","commits_url":"https://api.github.com/repos/lsst/geom/commits{/sha}","git_commits_url":"https://api.github.com/repos/lsst/geom/git/commits{/sha}","comments_url":"https://api.github.com/repos/lsst/geom/comments{/number}","issue_comment_url":"https://api.github.com/repos/lsst/geom/issues/comments{/number}","contents_url":"https://api.github.com/repos/lsst/geom/contents/{+path}","compare_url":"https://api.github.com/repos/lsst/geom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lsst/geom/merges","archive_url":"https://api.github.com/repos/lsst/geom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lsst/geom/downloads","issues_url":"https://api.github.com/repos/lsst/geom/issues{/number}","pulls_url":"https://api.github.com/repos/lsst/geom/pulls{/number}","milestones_url":"https://api.github.com/repos/lsst/geom/milestones{/number}","notifications_url":"https://api.github.com/repos/lsst/geom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lsst/geom/labels{/name}","releases_url":"https://api.github.com/repos/lsst/geom/releases{/id}","deployments_url":"https://api.github.com/repos/lsst/geom/deployments","created_at":"2014-08-16T07:43:54Z","updated_at":"2018-06-29T14:29:18Z","pushed_at":"2018-07-03T20:00:46Z","git_url":"git://github.com/lsst/geom.git","ssh_url":"git@github.com:lsst/geom.git","clone_url":"https://github.com/lsst/geom.git","svn_url":"https://github.com/lsst/geom","homepage":"http://dm.lsst.org","size":252,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":2,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":5,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"lsst:master","ref":"master","sha":"a7c72c5180d99b1ef68126d3ecd20bb85abad865","user":{"login":"lsst","id":1134504,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMzQ1MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1134504?v=4","gravatar_id":"","url":"https://api.github.com/users/lsst","html_url":"https://github.com/lsst","followers_url":"https://api.github.com/users/lsst/followers","following_url":"https://api.github.com/users/lsst/following{/other_user}","gists_url":"https://api.github.com/users/lsst/gists{/gist_id}","starred_url":"https://api.github.com/users/lsst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lsst/subscriptions","organizations_url":"https://api.github.com/users/lsst/orgs","repos_url":"https://api.github.com/users/lsst/repos","events_url":"https://api.github.com/users/lsst/events{/privacy}","received_events_url":"https://api.github.com/users/lsst/received_events","type":"Organization","site_admin":false},"repo":{"id":23013315,"node_id":"MDEwOlJlcG9zaXRvcnkyMzAxMzMxNQ==","name":"geom","full_name":"lsst/geom","owner":{"login":"lsst","id":1134504,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExMzQ1MDQ=","avatar_url":"https://avatars1.githubusercontent.com/u/1134504?v=4","gravatar_id":"","url":"https://api.github.com/users/lsst","html_url":"https://github.com/lsst","followers_url":"https://api.github.com/users/lsst/followers","following_url":"https://api.github.com/users/lsst/following{/other_user}","gists_url":"https://api.github.com/users/lsst/gists{/gist_id}","starred_url":"https://api.github.com/users/lsst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lsst/subscriptions","organizations_url":"https://api.github.com/users/lsst/orgs","repos_url":"https://api.github.com/users/lsst/repos","events_url":"https://api.github.com/users/lsst/events{/privacy}","received_events_url":"https://api.github.com/users/lsst/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/lsst/geom","description":"Pure-Python spherical geometry for LSST Data Management (will be superseded by sphgeom)","fork":false,"url":"https://api.github.com/repos/lsst/geom","forks_url":"https://api.github.com/repos/lsst/geom/forks","keys_url":"https://api.github.com/repos/lsst/geom/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lsst/geom/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lsst/geom/teams","hooks_url":"https://api.github.com/repos/lsst/geom/hooks","issue_events_url":"https://api.github.com/repos/lsst/geom/issues/events{/number}","events_url":"https://api.github.com/repos/lsst/geom/events","assignees_url":"https://api.github.com/repos/lsst/geom/assignees{/user}","branches_url":"https://api.github.com/repos/lsst/geom/branches{/branch}","tags_url":"https://api.github.com/repos/lsst/geom/tags","blobs_url":"https://api.github.com/repos/lsst/geom/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lsst/geom/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lsst/geom/git/refs{/sha}","trees_url":"https://api.github.com/repos/lsst/geom/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lsst/geom/statuses/{sha}","languages_url":"https://api.github.com/repos/lsst/geom/languages","stargazers_url":"https://api.github.com/repos/lsst/geom/stargazers","contributors_url":"https://api.github.com/repos/lsst/geom/contributors","subscribers_url":"https://api.github.com/repos/lsst/geom/subscribers","subscription_url":"https://api.github.com/repos/lsst/geom/subscription","commits_url":"https://api.github.com/repos/lsst/geom/commits{/sha}","git_commits_url":"https://api.github.com/repos/lsst/geom/git/commits{/sha}","comments_url":"https://api.github.com/repos/lsst/geom/comments{/number}","issue_comment_url":"https://api.github.com/repos/lsst/geom/issues/comments{/number}","contents_url":"https://api.github.com/repos/lsst/geom/contents/{+path}","compare_url":"https://api.github.com/repos/lsst/geom/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lsst/geom/merges","archive_url":"https://api.github.com/repos/lsst/geom/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lsst/geom/downloads","issues_url":"https://api.github.com/repos/lsst/geom/issues{/number}","pulls_url":"https://api.github.com/repos/lsst/geom/pulls{/number}","milestones_url":"https://api.github.com/repos/lsst/geom/milestones{/number}","notifications_url":"https://api.github.com/repos/lsst/geom/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lsst/geom/labels{/name}","releases_url":"https://api.github.com/repos/lsst/geom/releases{/id}","deployments_url":"https://api.github.com/repos/lsst/geom/deployments","created_at":"2014-08-16T07:43:54Z","updated_at":"2018-06-29T14:29:18Z","pushed_at":"2018-07-03T20:00:46Z","git_url":"git://github.com/lsst/geom.git","ssh_url":"git@github.com:lsst/geom.git","clone_url":"https://github.com/lsst/geom.git","svn_url":"https://github.com/lsst/geom","homepage":"http://dm.lsst.org","size":252,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":2,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":5,"open_issues":2,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/lsst/geom/pulls/6"},"html":{"href":"https://github.com/lsst/geom/pull/6"},"issue":{"href":"https://api.github.com/repos/lsst/geom/issues/6"},"comments":{"href":"https://api.github.com/repos/lsst/geom/issues/6/comments"},"review_comments":{"href":"https://api.github.com/repos/lsst/geom/pulls/6/comments"},"review_comment":{"href":"https://api.github.com/repos/lsst/geom/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/lsst/geom/pulls/6/commits"},"statuses":{"href":"https://api.github.com/repos/lsst/geom/statuses/2aca9068d654926b407f7996a6921d1e83e3aa71"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"kfindeisen"}}