diff --git a/.clang-tidy b/.clang-tidy index 1920dcf..fad0e71 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,7 @@ Checks: -*, clang-analyzer-*, + cppcoreguidelines-avoid-c-arrays, cppcoreguidelines-special-member-functions, readability-*, diff --git a/include/argparse/argparse.hpp b/include/argparse/argparse.hpp index 483efb9..9f8cde2 100644 --- a/include/argparse/argparse.hpp +++ b/include/argparse/argparse.hpp @@ -31,6 +31,7 @@ SOFTWARE. #pragma once #include #include +#include #include #include #include @@ -350,7 +351,8 @@ class Argument { -> std::ostream &; template - explicit Argument(std::string_view(&&a)[N], std::index_sequence unused) + explicit Argument(std::array &&a, + std::index_sequence unused) : mIsOptional((is_optional(a[I]) || ...)), mIsRequired(false), mIsRepeatable(false), mIsUsed(false) { ((void)mNames.emplace_back(a[I]), ...); @@ -362,7 +364,7 @@ class Argument { public: template - explicit Argument(std::string_view(&&a)[N]) + explicit Argument(std::array &&a) : Argument(std::move(a), std::make_index_sequence{}) {} Argument &help(std::string aHelp) { @@ -910,7 +912,7 @@ public: // Parameter packing // Call add_argument with variadic number of string arguments template Argument &add_argument(Targs... Fargs) { - using array_of_sv = std::string_view[sizeof...(Targs)]; + using array_of_sv = std::array; auto tArgument = mOptionalArguments.emplace(cend(mOptionalArguments), array_of_sv{Fargs...}); @@ -966,6 +968,7 @@ public: * ArgumentParser * @throws std::runtime_error in case of any invalid argument */ + // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays) void parse_args(int argc, const char *const argv[]) { std::vector arguments; std::copy(argv, argv + argc, std::back_inserter(arguments));