daniele77 / cli

A library for interactive command line interfaces in modern C++
Boost Software License 1.0
1.23k stars 140 forks source link

Default argument for commands #227

Open pkbehera opened 8 months ago

pkbehera commented 8 months ago
 root_menu->Insert(
        "show_updt",
        [&](ostream& out, uint32_t cnt = 1) {
            // do stuff
            //...
        },                                                                
        "Show next x updates");

I tried registering the above handler, expecting the command to use default argument of 1, when no arguments are provided. But it did not work, though it compiled just fine:

demo> help
Commands available:
 - help
        This help message
 - exit
        Quit the session
 - show_updt <unsigned int>
        Show next x updates
demo> show_updt 
wrong command: show_updt
demo> show_updt 2
demo> show_updt 1
demo>

Default arguments if available would be great!

Also, the error message here should better be something like missing command arguments instead of wrong command!

daniele77 commented 8 months ago

It would be a great feature, indeed.

Unfortunately, C++ templates do not work with default arguments, and cli library is implemented with template functions.

However, if someone in the community has already implemented a successful solution for using default arguments with template functions, please feel free to share a pull request (PR).