mirror of
https://github.com/KeqingMoe/argparse.git
synced 2025-07-04 15:14:39 +00:00
Resolve template recursion in add_parents method
This commit is contained in:
parent
3bd7b342f0
commit
ecf8286c9e
@ -325,30 +325,24 @@ class ArgumentParser {
|
|||||||
return *tArgument;
|
return *tArgument;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Base case for add_parents parameter packing
|
// Parameter packed add_parents method
|
||||||
void add_parents() {
|
// Accepts a variadic number of ArgumentParser objects
|
||||||
for (const auto& tParentParser : mParentParsers) {
|
template<typename... Targs>
|
||||||
auto tPositionalArguments = tParentParser.mPositionalArguments;
|
void add_parents(Targs... Fargs) {
|
||||||
for (auto& tArgument : tPositionalArguments) {
|
const auto tNewParentParsers = {Fargs...};
|
||||||
mPositionalArguments.emplace_back(tArgument);
|
for (const auto& tParentParser : tNewParentParsers) {
|
||||||
}
|
const auto& tPositionalArguments = tParentParser.mPositionalArguments;
|
||||||
auto tOptionalArguments = tParentParser.mOptionalArguments;
|
std::copy(std::begin(tPositionalArguments), std::end(tPositionalArguments), std::back_inserter(mPositionalArguments));
|
||||||
for (auto& tArgument : tOptionalArguments) {
|
|
||||||
mOptionalArguments.emplace_back(tArgument);
|
const auto& tOptionalArguments = tParentParser.mOptionalArguments;
|
||||||
}
|
std::copy(std::begin(tOptionalArguments), std::end(tOptionalArguments), std::back_inserter(mOptionalArguments));
|
||||||
auto tArgumentMap = tParentParser.mArgumentMap;
|
|
||||||
for (auto&[tKey, tValue] : tArgumentMap) {
|
const auto& tArgumentMap = tParentParser.mArgumentMap;
|
||||||
|
for (const auto&[tKey, tValue] : tArgumentMap) {
|
||||||
mArgumentMap.insert_or_assign(tKey, tValue);
|
mArgumentMap.insert_or_assign(tKey, tValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
std::move(std::begin(tNewParentParsers), std::end(tNewParentParsers), std::back_inserter(mParentParsers));
|
||||||
|
|
||||||
// Parameter packed add_parents method
|
|
||||||
// Accepts a variadic number of ArgumentParser objects
|
|
||||||
template<typename T, typename... Targs>
|
|
||||||
void add_parents(T aArgumentParser, Targs... Fargs) {
|
|
||||||
mParentParsers.emplace_back(aArgumentParser);
|
|
||||||
add_parents(Fargs...);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Call parse_args_internal - which does all the work
|
/* Call parse_args_internal - which does all the work
|
||||||
|
Loading…
Reference in New Issue
Block a user