aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaylor C. Richberger <taywee@gmx.com>2018-05-09 22:59:07 -0600
committerGitHub <noreply@github.com>2018-05-09 22:59:07 -0600
commitbd0429e91f5bb140271870d5421e412bf78b9f31 (patch)
treec1fca76ba6c2a1f71b5dfb26a75af38e272e636d
parentMerge pull request #61 from pavel-belikov/fix-gcc8-build (diff)
parentFix Nargs::min, Nargs::max initializers for min/max macros from <windows.h> (diff)
downloadargs.hxx-bd0429e91f5bb140271870d5421e412bf78b9f31.tar.xz
Merge pull request #62 from pavel-belikov/fix-windows-minmax
Fix min/max collisions from <windows.h>
-rw-r--r--CMakeLists.txt5
-rw-r--r--args.hxx4
-rw-r--r--test/windows_h.cxx37
3 files changed, 44 insertions, 2 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d0aaa69..8f17cab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,6 +36,7 @@ else ()
endif ()
add_executable(argstest-multiple-inclusion test/multiple_inclusion_1.cxx test/multiple_inclusion_2.cxx)
+
target_link_libraries(argstest-multiple-inclusion args)
set_property(TARGET argstest-multiple-inclusion PROPERTY CXX_STANDARD 11)
@@ -43,6 +44,10 @@ add_executable(gitlike examples/gitlike.cxx)
target_link_libraries(gitlike args)
set_property(TARGET gitlike PROPERTY CXX_STANDARD 11)
+add_executable(argstest-windows-h test/windows_h.cxx)
+target_link_libraries(argstest-windows-h args)
+set_property(TARGET argstest-windows-h PROPERTY CXX_STANDARD 11)
+
add_executable(completion examples/completion.cxx)
target_link_libraries(completion args)
set_property(TARGET completion PROPERTY CXX_STANDARD 11)
diff --git a/args.hxx b/args.hxx
index 62bbfb3..548162b 100644
--- a/args.hxx
+++ b/args.hxx
@@ -748,7 +748,7 @@ namespace args
const size_t min;
const size_t max;
- Nargs(size_t min_, size_t max_) : min(min_), max(max_)
+ Nargs(size_t min_, size_t max_) : min{min_}, max{max_}
{
#ifndef ARGS_NOEXCEPT
if (max < min)
@@ -758,7 +758,7 @@ namespace args
#endif
}
- Nargs(size_t num_) : min(num_), max(num_)
+ Nargs(size_t num_) : min{num_}, max{num_}
{
}
diff --git a/test/windows_h.cxx b/test/windows_h.cxx
new file mode 100644
index 0000000..007a1e7
--- /dev/null
+++ b/test/windows_h.cxx
@@ -0,0 +1,37 @@
+#ifdef _WIN32
+#include "windows.h"
+#else
+#define min(a,b) ((a)<(b)?(a):(b))
+#define max(a,b) ((a)>(b)?(a):(b))
+#endif
+
+#include <iostream>
+#include <args.hxx>
+
+int main(int argc, char** argv)
+{
+ args::ArgumentParser parser("This is a test program.", "This goes after the options.");
+ args::HelpFlag help(parser, "help", "Display this help menu", {'h', "help"});
+ args::CompletionFlag completion(parser, {"complete"});
+ try
+ {
+ parser.ParseCLI(argc, argv);
+ }
+ catch (args::Completion& e)
+ {
+ std::cout << e.what();
+ return 0;
+ }
+ catch (args::Help&)
+ {
+ std::cout << parser;
+ return 0;
+ }
+ catch (args::ParseError& e)
+ {
+ std::cerr << e.what() << std::endl;
+ std::cerr << parser;
+ return 1;
+ }
+ return 0;
+}