Opened 5 years ago
#13327 new Bugs
Issue with boost::property_tree::ptree inside lambda with a capture using Visual Studio 2017
Reported by: | Owned by: | Sebastian Redl | |
---|---|---|---|
Milestone: | To Be Determined | Component: | property_tree |
Version: | Boost 1.63.0 | Severity: | Problem |
Keywords: | Cc: |
Description
We are running into an issue with Boost 1.56.0, in boost::property_tree:: ptree, when using it inside lambda function with a capture using Visual Studio 2017.
I get the following errors from line 4 and line 6 when compiling the attached file.
boost\include\boost-1_56\boost\property_tree\detail\ptree_implementation.hpp(252): error C2440: '<function-style-cast>': cannot convert from 'boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::sequenced_index_node<Super>>' to 'boost::property_tree::basic_ptree<std::string,std::string,std::less<Key>>::const_iterator'
with [
Super=boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::index_node_base<std::pair<const std::string,boost::property_tree::basic_ptree<std::string,std::string,std::less<std::string>>>,std::allocator<std::pair<const std::string,boost::property_tree::basic_ptree<std::string,std::string,std::less<std::string>>>>>>
] and [
Key=std::string
]
boost\include\boost-1_56\boost\property_tree\detail\ptree_implementation.hpp(252): note: No constructor could take the source type, or constructor overload resolution was ambiguous
note: see reference to function template instantiation 'boost::property_tree::basic_ptree<std::string,std::string,std::less<Key>>::const_iterator boost::property_tree::basic_ptree<Key,std::string,std::less<Key>>::begin(void) const' being compiled
with [
Key=std::string
]
The workaround that we have is to use auto instead of the actual types for the const_iterator returned from begin(). See attached cpp file.
Source file to reproduce the issue