Hello. If boost is already part of your workflow, there is probably no reason to switch. boost::program_options is sophisticated and widely used by the community.
If boost is not part of your workflow and you want something lightweight, then here are some reasons (some of these reasons are "in my opinion"): This library is header-only. It's a single header file and you're off. As the README suggests, the ArgumentParser class is easy to use and intuitive. Processing functions can be provided as "action" lambdas in each argument to convert the argument value from raw strings to higher-level objects and aggregates - examples in the README better represent what I mean here. The parser supports parsing and extraction of std::vector<T> and std::list<T> from a list of argument values too.
There are numerous argument parsers for C++ and this post should have been titled "Yet another argument parser for C++" but hey, I've had fun putting this together. If you think it suits your use-cases, you're welcome to try it out and give me feedback. Thanks.
Start slowly. Don't think about spending four years of ALL your free time on this project. Think short term. 3-6 months and see where you get. Plan what you want to finish in 3-6 months and see if you are able to find the passion to finish what you planned. If you have the passion and it's coming along nicely, you may want to keep going. If, on the other hand, you're finding this work to be tedious and taking up time you could be doing something else with, then you have your answer.
Remember... if this becomes successful, your work won't stop at 4 years. It'll go on for quite a bit longer. Ask yourself if that's something you're up for. If not, keep this as a hobby project and draw your boundaries.
Thanks for the feedback. Yes, I agree. This is not optimal. The project was more a learning experience for me with language interpretation. I have since learned that it is better to implement a byte-code emitter and a stack-based VM. I just wanted to get the tree-walker to a reasonable place before moving on.
If boost is not part of your workflow and you want something lightweight, then here are some reasons (some of these reasons are "in my opinion"): This library is header-only. It's a single header file and you're off. As the README suggests, the ArgumentParser class is easy to use and intuitive. Processing functions can be provided as "action" lambdas in each argument to convert the argument value from raw strings to higher-level objects and aggregates - examples in the README better represent what I mean here. The parser supports parsing and extraction of std::vector<T> and std::list<T> from a list of argument values too.
There are numerous argument parsers for C++ and this post should have been titled "Yet another argument parser for C++" but hey, I've had fun putting this together. If you think it suits your use-cases, you're welcome to try it out and give me feedback. Thanks.