[C++] Adopt C++17 idioms and features for maintainability
- 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
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