[
https://issues.apache.org/jira/browse/ARROW-17547?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17607783#comment-17607783
]
Antoine Pitrou edited comment on ARROW-17547 at 9/21/22 2:23 PM:
-----------------------------------------------------------------
Hmm, unfortunately GCC has parser bugs that prohibit the use of [[discard]]
with other attributes such as {{\_\_attribute\_\_}} or {{\_\_declspec}}. For
example here is a failure on MinGW:
{code}
D:/a/arrow/arrow/cpp/src/arrow/status.h:132:20: error: expected identifier
before '[' token
132 | class ARROW_EXPORT [[nodiscard]] Status : public
util::EqualityComparable<Status>,
| ^
D:/a/arrow/arrow/cpp/src/arrow/status.h:132:41: error: expected initializer
before ':' token
132 | class ARROW_EXPORT [[nodiscard]] Status : public
util::EqualityComparable<Status>,
| ^
D:/a/arrow/arrow/cpp/src/arrow/status.h:376:32: error: invalid use of
incomplete type 'class arrow::Status'
376 | void Status::MoveFrom(Status& s) {
| ^
{code}
was (Author: pitrou):
Hmm, unfortunately GCC has parser bugs that prohibit the use of [[discard]]
with other attributes such as {{__attribute__}} or {{__declspec}}. For example
here is a failure on MinGW:
{code}
D:/a/arrow/arrow/cpp/src/arrow/status.h:132:20: error: expected identifier
before '[' token
132 | class ARROW_EXPORT [[nodiscard]] Status : public
util::EqualityComparable<Status>,
| ^
D:/a/arrow/arrow/cpp/src/arrow/status.h:132:41: error: expected initializer
before ':' token
132 | class ARROW_EXPORT [[nodiscard]] Status : public
util::EqualityComparable<Status>,
| ^
D:/a/arrow/arrow/cpp/src/arrow/status.h:376:32: error: invalid use of
incomplete type 'class arrow::Status'
376 | void Status::MoveFrom(Status& s) {
| ^
{code}
> [C++] Adopt C++17 idioms and features for maintainability
> ---------------------------------------------------------
>
> Key: ARROW-17547
> URL: https://issues.apache.org/jira/browse/ARROW-17547
> Project: Apache Arrow
> Issue Type: Sub-task
> Components: C++
> Reporter: Antoine Pitrou
> Priority: Major
> Fix For: 10.0.0
>
>
> A first version of this task was attempted one year ago in
> https://github.com/apache/arrow/pull/10414
> Possible idioms to look for:
> * {{if constexpr}} to replace SFINAE hackery
> * {{std::from_chars}} and {{std::to_chars}} to replace locale-dependent
> number parsing/formatting
> * lambda capture move-construction
> Possibly sub-tasks:
> * regenerate Flatbuffers files for C++17 (see
> {{build-support/update-flatbuffers.sh}})
> * update {{build-support/cpplint.py}} to newer upstream version
--
This message was sent by Atlassian Jira
(v8.20.10#820010)