The following example could not be compiled:
=================================================================
#include <string>
#include <boost/program_options.hpp>

namespace po = boost::program_options;

int main()
{
  std::wstring test;
  po::options_description desc("Allowed options");
  desc.add_options()
    ("test", po::wvalue<std::wstring>(&test)->default_value(L"value"), "description");
}
=================================================================
It is due to wvalue::default_value tries to do lexical_cast<std::string>(std::wstring).
Also I cannot change default_value to default_value("value") as soon as it accepts only something convertible to std::wstring.
In other words it is impossible to specify default_value for wstring option.