)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1004964,"name":"Vesko Karaganev","email":"vesko.karaganev@couchbase.com","username":"veselink1","avatars":[{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"28757764ff39aea1678753f5eb46f8eeb3c7211e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"fdd6f597_1232ce90","updated":"2023-09-08 12:18:03.000000000","message":"Override BuildBot: known ASan and Windows failures + issue fixed in patch in review","commit_id":"de699c34d5094c074e60731a0d2ce1dfe8d791bd"},{"author":{"_account_id":1004964,"name":"Vesko Karaganev","email":"vesko.karaganev@couchbase.com","username":"veselink1","avatars":[{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"0e8a935446fe13304be8a935026e0ab52f13e416","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6e797dcd_c3038b34","updated":"2023-09-18 12:54:24.000000000","message":"Override BuildBot: unrelated failure","commit_id":"804b783e42ce6635f0595af09f68d5cfd67111c2"}],"utilities/math_utilities.h":[{"author":{"_account_id":1005235,"name":"Pavlos Georgiou","email":"pavlos.georgiou@couchbase.com","username":"pavlosg","avatars":[{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ddf5282ee5af91b7ad802fc89b878afb36f5e013","unresolved":true,"context_lines":[{"line_number":15,"context_line":" * Calculate a percentage value of an integer."},{"line_number":16,"context_line":" */"},{"line_number":17,"context_line":"template \u003ctypename T\u003e"},{"line_number":18,"context_line":"auto percentOf(T val, double percent) {"},{"line_number":19,"context_line":"    return static_cast\u003cT\u003e(static_cast\u003cdouble\u003e(val) * percent);"},{"line_number":20,"context_line":"}"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e92f83ef_00de99f4","line":18,"range":{"start_line":18,"start_character":5,"end_line":18,"end_character":14},"updated":"2023-09-08 13:19:44.000000000","message":"I would call it fractionOf, to avoid mistakes(?) like `bonus \u003d percentOf(salary, 5)`.\n\nIs implicitly computing floor instead of rounding appropriate?","commit_id":"de699c34d5094c074e60731a0d2ce1dfe8d791bd"},{"author":{"_account_id":1005235,"name":"Pavlos Georgiou","email":"pavlos.georgiou@couchbase.com","username":"pavlosg","avatars":[{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/37a23779d2698c24df7ea51f7c1f8d81.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"ddf5282ee5af91b7ad802fc89b878afb36f5e013","unresolved":true,"context_lines":[{"line_number":14,"context_line":"/**"},{"line_number":15,"context_line":" * Calculate a percentage value of an integer."},{"line_number":16,"context_line":" */"},{"line_number":17,"context_line":"template \u003ctypename T\u003e"},{"line_number":18,"context_line":"auto percentOf(T val, double percent) {"},{"line_number":19,"context_line":"    return static_cast\u003cT\u003e(static_cast\u003cdouble\u003e(val) * percent);"},{"line_number":20,"context_line":"}"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"177ade47_addf6d5e","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":4},"updated":"2023-09-08 13:19:44.000000000","message":"Template functions are not inline by default. This one should be.","commit_id":"de699c34d5094c074e60731a0d2ce1dfe8d791bd"},{"author":{"_account_id":1004964,"name":"Vesko Karaganev","email":"vesko.karaganev@couchbase.com","username":"veselink1","avatars":[{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a99800673eddd7a0fdafcec2c56509b3aebe6ccb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"/**"},{"line_number":15,"context_line":" * Calculate a percentage value of an integer."},{"line_number":16,"context_line":" */"},{"line_number":17,"context_line":"template \u003ctypename T\u003e"},{"line_number":18,"context_line":"auto percentOf(T val, double percent) {"},{"line_number":19,"context_line":"    return static_cast\u003cT\u003e(static_cast\u003cdouble\u003e(val) * percent);"},{"line_number":20,"context_line":"}"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"b7fe1b5c_f48790b5","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":4},"in_reply_to":"177ade47_addf6d5e","updated":"2023-09-11 13:55:39.000000000","message":"Based on conversations on Slack, this is referring to the fact that the symbol will have external linkage. To make the linkage internal, static should be used. From https://en.cppreference.com/w/cpp/language/inline it appears inline will not make it internal linkage, but could be wrong. \n\nI believe the code as-is is fine, and allowed by the One-Definition Rule. My current understanding is that, ignoring any linker making, external linkage means the duplicate symbols will be deduped, reducing generated code. \n\nTo avoid inconsistency with other places where we have template functions in headers, and to avoid having to explain the differences, leaving this as-is 😊","commit_id":"de699c34d5094c074e60731a0d2ce1dfe8d791bd"},{"author":{"_account_id":1004964,"name":"Vesko Karaganev","email":"vesko.karaganev@couchbase.com","username":"veselink1","avatars":[{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/0d261762ccab34b23c8e459b684102fc.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a99800673eddd7a0fdafcec2c56509b3aebe6ccb","unresolved":false,"context_lines":[{"line_number":15,"context_line":" * Calculate a percentage value of an integer."},{"line_number":16,"context_line":" */"},{"line_number":17,"context_line":"template \u003ctypename T\u003e"},{"line_number":18,"context_line":"auto percentOf(T val, double percent) {"},{"line_number":19,"context_line":"    return static_cast\u003cT\u003e(static_cast\u003cdouble\u003e(val) * percent);"},{"line_number":20,"context_line":"}"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"67cd71d5_86d00426","line":18,"range":{"start_line":18,"start_character":5,"end_line":18,"end_character":14},"in_reply_to":"e92f83ef_00de99f4","updated":"2023-09-11 13:55:39.000000000","message":"Done","commit_id":"de699c34d5094c074e60731a0d2ce1dfe8d791bd"}]}
