Opened 10 years ago
Last modified 10 years ago
#7361 new Support Requests
Forbid compilation of leaking mistake.
Reported by: | Owned by: | Vladimir Prus | |
---|---|---|---|
Milestone: | To Be Determined | Component: | program_options |
Version: | Boost 1.51.0 | Severity: | Problem |
Keywords: | Cc: |
Description
I was adding program_option to my prorgam when I discovered a related leak. Fortunately it was false positive, but it pointed a hidden problem. I used:
- Visual Studio 2012
- Boost 1.51.0
- Visual Leak Detector to detect the leak
This, generate the leak:
#include <boost/program_options.hpp> int main() { namespace bpo = boost::program_options; bpo::options_description options( "Options" ); options.add_options() ( "test" , "Test." ) , ( "value" , bpo::value<int>(), "Value." ) ; }
The second option is leaking. The reason is because of the comma in the beginning of the line. I first added it by reflex when using function arguments so it took me some time to find what was leaking. Part of the time I spend was figuring out why it don't leak if you don't set a value type:
#include <boost/program_options.hpp> int main() { namespace bpo = boost::program_options; bpo::options_description options( "Options" ); options.add_options() ( "test" , "Test." ) , ( "value" , "Value." ) // no leak but still wrong! ; }
The main problem I see with this is that it is compiled without any problem nor warning.
So here is my question: Would it be possible to forbid comma operator with options_description_easy_init?
It does leaks for me as well, when specified bpo::value<std::string>().