Allow empty strings
Option names must not start with a dash
Using typedef char_type instead of char
Use output iterators instead of function objects
Use size() == 0 instead of empty() (works with QString)
Using a traits class to make it easy to adapt new (container) types
Make the traits class a template parameter for Arg
Remove Qt specializations
Update the test app