argparse
argparse copied to clipboard
Compiler diagnostic with clang from the LLVM 9 download package
clang generates the following diagnostic fault when compiling using this library:
C:\Src\NetworkedGraphics\out\packages\argparse-src\package\include\argparse\argparse.hpp(196,28): error G3F63BFAE: constexpr variable 'generic_strtod
The quick fix appears to be to remove the indicated constexpr qualifier.
This was picked up running an msvc compile (vs 16.6.0) followed by a clang-tidy run (llvm 9.0). The diagnostic is produced by clang within clang-tidy. clang-tidy is being run with msvc build commands from the configured cmake build database (standard usage).
These three lines of code will give error on clang 11. Removing constexpr
fixes the error.
The latest version of the library has fixed this issue.
The build is clean, without warnings, and the tests pass.
pranav@ubuntu:~/dev/argparse/build$ export CC=/usr/bin/clang-12
pranav@ubuntu:~/dev/argparse/build$ export CXX=/usr/bin/clang++-12
pranav@ubuntu:~/dev/argparse/build$ cmake -DARGPARSE_BUILD_TESTS=on ..
-- The CXX compiler identification is Clang 12.0.0
-- Check for working CXX compiler: /usr/bin/clang++-12
-- Check for working CXX compiler: /usr/bin/clang++-12 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The C compiler identification is Clang 12.0.0
-- Check for working C compiler: /usr/bin/clang-12
-- Check for working C compiler: /usr/bin/clang-12 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pranav/dev/argparse/build
pranav@ubuntu:~/dev/argparse/build$ make -j20
Scanning dependencies of target ARGPARSE
[ 3%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_const_correct.cpp.o
[ 11%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_append.cpp.o
[ 14%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_actions.cpp.o
[ 18%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_compound_arguments.cpp.o
[ 22%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_default_args.cpp.o
[ 25%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_container_arguments.cpp.o
[ 29%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_get.cpp.o
[ 29%] Building CXX object test/CMakeFiles/ARGPARSE.dir/main.cpp.o
[ 37%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_help.cpp.o
[ 40%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_invalid_arguments.cpp.o
[ 40%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_equals_form.cpp.o
[ 44%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_is_used.cpp.o
[ 48%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_issue_37.cpp.o
[ 51%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_negative_numbers.cpp.o
[ 55%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_parent_parsers.cpp.o
[ 59%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_parse_args.cpp.o
[ 62%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_optional_arguments.cpp.o
[ 66%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_prefix_chars.cpp.o
[ 70%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_parse_known_args.cpp.o
[ 74%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_positional_arguments.cpp.o
[ 77%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_repr.cpp.o
[ 81%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_required_arguments.cpp.o
[ 85%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_scan.cpp.o
[ 88%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_subparsers.cpp.o
[ 92%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_value_semantics.cpp.o
[ 96%] Building CXX object test/CMakeFiles/ARGPARSE.dir/test_version.cpp.o
[100%] Linking CXX executable tests
[100%] Built target ARGPARSE
pranav@ubuntu:~/dev/argparse/build$ ./test/tests
[doctest] doctest version is "2.4.8"
[doctest] run with "--help" for options
===============================================================================
[doctest] test cases: 158 | 158 passed | 0 failed | 1 skipped
[doctest] assertions: 706 | 706 passed | 0 failed |
[doctest] Status: SUCCESS!