[ 
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)

Reply via email to