Have been integrating this (version 1.52.0) into my app, but have stumbled upon the problem as described above.

In the example attached the exception what() method always still has the %canonical\_option% tag intact and is not replaced with my option name.

I'm using VS2008, have disabled unicode (option 'none') and removed all other files from my project, it's only this code in a main.cpp file.

Or have I got this all wrong and there is something else I should be calling to format the exception message with the correct parameter name?

```
#include <boost/program_options.hpp>

namespace po = boost::program_options;

using namespace std;

int main(int argc, char* argv[])
{

    try {

        po::options_description optionalParams("optional");

        optionalParams.add_options() 
            ("log_severity,l", po::value<int>()->required(), "Minimum severity logging level")
            ("log_file,g", po::value<string>(), "Full path to log file")
            ;

        po::variables_map optMap;

        po::parsed_options parsed = po::command_line_parser(argc, argv)
            .options(optionalParams)
            .allow_unregistered()
            .run();

        po::store(parsed, optMap);

        po::notify(optMap);

    }
    catch(po::error e)
    {
        cout << e.what();
        return 0;
    }

    return 0;
}

```