diff --git a/main b/main index 7e467d5..9e05a89 100755 Binary files a/main and b/main differ diff --git a/subprocess.hpp b/subprocess.hpp index 9630053..948002c 100755 --- a/subprocess.hpp +++ b/subprocess.hpp @@ -1017,7 +1017,7 @@ namespace detail OutBuffer check_output_impl(F& farg, Args&&... args) { static_assert(!detail::has_type>::value, "output not allowed in args"); - auto p = Popen(farg, std::forward(args)..., output{PIPE}); + auto p = Popen(std::forward(farg), std::forward(args)..., output{PIPE}); auto res = p.communicate(nullptr, 0); auto retcode = p.poll(); if (retcode) { @@ -1026,12 +1026,24 @@ namespace detail return std::move(res.first); } + template + int call_impl(F& farg, Args&&... args) + { + return Popen(std::forward(farg), std::forward(args)...).wait(); + } + } template -int call(Args&&... args) +int call(std::initializer_list plist, Args&&... args) { - return Popen(std::forward(args)...).wait(); + return (detail::call_impl(plist, std::forward(args)...)); +} + +template +int call(const std::string& arg, Args&&... args) +{ + return (detail::call_impl(arg, std::forward(args)...)); } template