Opened 5 years ago
Last modified 4 years ago
#13332 new Bugs
Boost 1.65.1 seems to be missing boost graph fixes from 1.64
Reported by: | Owned by: | Jeremiah Willcock | |
---|---|---|---|
Milestone: | To Be Determined | Component: | graph |
Version: | Boost 1.65.0 | Severity: | Problem |
Keywords: | Cc: |
Description
I am getting compile errors using VS2017 in boost 1.65.1
boost\graph\named_function_params.hpp
template <class Tag, typename Args> inline const typename lookup_named_param_def<Tag, Args, param_not_found>::type& get_param(const Args& p, Tag) { return lookup_named_param_def<Tag, Args, param_not_found>::get(p, param_not_found()); }
This was fixed in 1.64 apparently.
#if _MSC_VER >=1900 #pragma warning( push ) #pragma warning( disable : 4172 ) #endif template <class Tag, typename Args> inline const typename lookup_named_param_def<Tag, Args, param_not_found>::type&
get_param(const Args& p, Tag) {
return lookup_named_param_def<Tag, Args, param_not_found>::get(p, param_not_found()); } #if _MSC_VER >= 1900 #pragma warning( pop ) #endif
I found another example of this:
explicit two_bit_color_map(std::size_t n, const IndexMap& index = IndexMap()) : n(n), index(index), data(new unsigned char[(n + elements_per_char - 1) / elements_per_char]) { // Fill to white std::fill(data.get(), data.get() + (n + elements_per_char - 1) / elements_per_char, 0); }
in this case the int 0 being passed to std::fill needs to be casted to a char to compile. Also fixed in 1.64. Has something gone wrong here in the 1.65.1 release?
Change History (3)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
Component: | None → graph |
---|---|
Owner: | set to |
comment:3 by , 4 years ago
This is the case in Boost 1.67 too, compiling with VS 2017 15.5.6 boost\boost/type_traits/has_minus.hpp boost\boost/type_traits/has_minus_assign.hpp boost\boost/type_traits/has_plus_assign.hpp
yields: "warning C5032: detected #pragma warning(push) with no corresponding #pragma warning(pop) compiling ..."
I'll raise an issue on Github I guess?
Note the first error gives a compile error due to the temporary that is passed in and returned from the get() function.