[
https://issues.apache.org/jira/browse/ARROW-14960?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17452033#comment-17452033
]
Wes McKinney commented on ARROW-14960:
--------------------------------------
Interesting evolution. In general, we should be preferring {{Result<T>}} to
out-values in general, I would think, except for functions where we pass a
mutable object.
I'm not sure what Google's motivation in changing the SG after such a long time
on this matter is, but I would guess it is to have a readability convention to
distinguish optional vs. non-optional output arguments:
* Required input/output arg: use non-const reference
* Optional output arg: use non-const pointer
This would hit us anywhere we pass {{InputStream* / RandomAccessFile*}} or
{{OutputStream*}} — admittedly starting to see {{FooMethod(InputStream& file,
...)}} in the codebase makes the skin crawl.
> [C++] Google style guide allows mutable references now, what do?
> ----------------------------------------------------------------
>
> Key: ARROW-14960
> URL: https://issues.apache.org/jira/browse/ARROW-14960
> Project: Apache Arrow
> Issue Type: Bug
> Components: C++
> Reporter: Ben Kietzman
> Priority: Minor
>
> As of
> https://github.com/google/styleguide/commit/7a7a2f510efe7d7fc5ea8fbed549ddb31fac8f3e
> the Google Style Guide no longer forbids use of mutable references for
> output arguments, and actually encourages using them when the output argument
> is not optional.
> This puts arrow c++ style out of sync since we've continued to police toward
> usage of pointers for output arguments. We could:
> - keep the ban and note this as a deviation from google style in
> [development.rst|https://github.com/bkietz/arrow/blob/392af8aa999f940ab8fd61684820b2c6d89f7871/docs/source/developers/cpp/development.rst#L74-L75]
> - open JIRA(s) for deprecating/replacing pointer-output APIs where applicable
--
This message was sent by Atlassian Jira
(v8.20.1#820001)