On 6/5/2018 8:51 AM, Xavier Besseron wrote:
I remember having some troubles using |boost::optional| with |boost::program_options|. I fixed it by adding the following lines: [snip] I don’t remember the details, but I think I took that from more recent version of Boost to be able to use my code with older version of Boost. With that, my code compiles and runs fine
* on Linux for Boost from 1.54 to 1.66 with various compilers (GCC 4.8 to 7.3, Intel Compiler, Clang) * on Windows for Boost 1.60 with MSVC++ from 9 (2008) to 14 (2015).
I finally got everything working, and based on your code, you'll have the same issue if you start using Boost 1.62+ on MSVC. I didn't delve too deep into the why, but putting your `validate` function in the `boost` namespace and `using namespace boost::program_options` will introduce an ambiguity when constructing a `boost::optional` (it's trying to find the `detail` namespace and gets confused). I resolved it like this: https://github.com/jimporter/mettle/blob/7ea222a58537bd366ec0cf864de30d29695.... Thanks again for the pointer! - Jim