
I've got a "primary" options_description instance to which I add() other "secondary" options_description instances. I want operator<< to print the primary and all secondary instances with the primary instance's line width. I expect that this should happen automagically because, after construction, I cannot adjust the private m_line_length member of the secondary instances through any public means. However, it does not. A small re-create follows my signature. In my applications, I do not control the construction of the secondary instances and so I cannot adjust the secondary instance's construction-time width setting. Is this behavior a deliberate design decision? Some minor rework to options_description::print(...) within src/options_description.cpp would make it possible. Thanks, Rhys #include <iostream> #include <boost/program_options.hpp> int main() { static const char lengthy[] = "123456789 123456789 123456789 123456789 " "123456789 123456789 123456789 123456789 " "123456789 123456789 123456789 123456789 " "123456789 123456789 123456789 123456789 " "123456789 123456789 123456789 123456789 " "123456789 123456789 123456789 123456789 " "123456789 123456789 123456789 123456789 "; boost::program_options::options_description foo(255); // Linewidth 255 foo.add_options() ( "foo", lengthy ); boost::program_options::options_description bar; // Default line width bar.add_options() ( "bar", lengthy ); // foo should either dictate bar's line width, or... // I should be able to change it via a public interface... // ... but I seemingly cannot. foo.add(bar); // Option --foo has a nice long width, // but option --bar is truncated. std::cout << foo; }