apache / apache/arrow

[C++] Adopt C++17 idioms and features for maintainability

Open
#32,800 6 comments 0 reactions 0 assignees View on GitHub
Component: C++ Type: task
Dominant language
C++
Stars
17.1k
Forks
4.3k
Avg merge
3d 18h
Merged PRs (30d)
91

Description

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

**Reporter**: [Antoine Pitrou](https://issues.apache.org/jira/browse/ARROW-17547) / @pitrou
#### Related issues:
- [[C++] Use std::to_chars instead of std::to_string](https://github.com/apache/arrow/issues/33518) (is a parent of)
- [[C++] Regenerate Flatbuffers files for C++17](https://github.com/apache/arrow/issues/33031) (is a parent of)
- [[C++] Use lambda capture move construction](https://github.com/apache/arrow/issues/33018) (is a parent of)
- [[C++] Use [[nodiscard]]](https://github.com/apache/arrow/issues/33027) (is a parent of)
- [[C++] Use if constexpr in CSV subsystem](https://github.com/apache/arrow/issues/33065) (is a parent of)
- [[C++] Use generic lambdas in arrow/compare.cc](https://github.com/apache/arrow/issues/33183) (is a parent of)

**Note**: *This issue was originally created as [ARROW-17547](https://issues.apache.org/jira/browse/ARROW-17547). Please see the [migration documentation](https://github.com/apache/arrow/issues/14542) for further details.*

Contributor guide

Open the contributing guide

Research direction

Start by reading the earlier PR #10414 and the related parent issues, which divide this umbrella task into focused C++17 changes. Review build-support/update-flatbuffers.sh and build-support/cpplint.py for the explicitly mentioned subtasks. Done means completing a defined subtask with its relevant checks passing and avoiding overlap with the related issues.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
developer-experience
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.