Draft: Modernize to C++17, 1st iteration: std::filesystem with GitLab Duo Workflow
What does this MR do and why?
Summary of Changes
This update modernizes the codebase from C++11 to C++17, enabling the use of newer language features like std::filesystem. A new ConfigurationParser class has been added to manage application settings using a singleton pattern, allowing for centralized configuration management. The MetricsCollector now accepts a configurable collection interval parameter. The ArduinoTemperatureSensor has been made more resilient by gracefully falling back to simulated values when hardware issues occur instead of throwing exceptions. The Utils namespace has been expanded with filesystem-related helper functions that leverage C++17 capabilities. Documentation has been updated to reflect these changes and provide examples of additional C++17 features that could be incorporated in the future, such as structured bindings, std::optional, and parallel algorithms.
References
Screenshots or screen recordings
| Before | After |
|---|---|
How to set up and validate locally
MR acceptance checklist
-
Styleguide -
Tests -
Documentation