diff --git a/CMakeLists.txt b/CMakeLists.txt index b45b0b3..9e70d58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,6 @@ target_link_libraries(boost_property_map Boost::smart_ptr Boost::throw_exception Boost::type_traits - Boost::utility ) if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt") diff --git a/build.jam b/build.jam index 33aa7e4..c472277 100644 --- a/build.jam +++ b/build.jam @@ -17,8 +17,7 @@ constant boost_dependencies : /boost/smart_ptr//boost_smart_ptr /boost/throw_exception//boost_throw_exception /boost/type_index//boost_type_index - /boost/type_traits//boost_type_traits - /boost/utility//boost_utility ; + /boost/type_traits//boost_type_traits ; project /boost/property_map : common-requirements diff --git a/doc/function_property_map.html b/doc/function_property_map.html index 4ab68b5..fff6b2f 100644 --- a/doc/function_property_map.html +++ b/doc/function_property_map.html @@ -68,7 +68,7 @@

Template Parameters

Ref The result type of the function. -boost::result_of<const UnaryFunction(const Key&)>::type +decltype(std::declval<const UnaryFunction>()(std::declval<const Key&>())) diff --git a/doc/transform_value_property_map.html b/doc/transform_value_property_map.html index ea4e7c0..39c7b7f 100644 --- a/doc/transform_value_property_map.html +++ b/doc/transform_value_property_map.html @@ -68,7 +68,7 @@

Template Parameters

Ref The result type of the function. -boost::result_of<const UnaryFunction(property_traits<PM>::reference)>::type +decltype(std::declval<const UnaryFunction>()(std::declval<property_traits<PM>::reference>())) diff --git a/include/boost/property_map/function_property_map.hpp b/include/boost/property_map/function_property_map.hpp index 5ce1cbf..6c03d53 100644 --- a/include/boost/property_map/function_property_map.hpp +++ b/include/boost/property_map/function_property_map.hpp @@ -3,6 +3,7 @@ // Author: Philipp Moeller // // Copyright 2012, Philipp Moeller +// Copyright 2026, Arnaud Becheler // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -16,13 +17,23 @@ #include #include #include -#include #include #include namespace boost { -template::type> +namespace detail { + +// MSVC in permissive mode cannot evaluate a bare decltype default template argument +template +struct function_property_map_result +{ + using type = decltype(std::declval()(std::declval())); +}; + +} // namespace detail + +template::type> class function_property_map: public put_get_helper > { public: typedef Key key_type; diff --git a/include/boost/property_map/transform_value_property_map.hpp b/include/boost/property_map/transform_value_property_map.hpp index d8673c3..c503c99 100644 --- a/include/boost/property_map/transform_value_property_map.hpp +++ b/include/boost/property_map/transform_value_property_map.hpp @@ -3,6 +3,7 @@ // Author: Philipp Moeller // // Copyright 2012, Philipp Moeller +// Copyright 2026, Arnaud Becheler // // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at @@ -16,13 +17,23 @@ #include #include #include -#include #include #include namespace boost { -template::reference)>::type> +namespace detail { + +// MSVC in permissive mode cannot evaluate a bare decltype default template argument +template +struct transform_value_property_map_result +{ + using type = decltype(std::declval()(std::declval::reference>())); +}; + +} // namespace detail + +template::type> class transform_value_property_map: public put_get_helper > { public: typedef typename property_traits::key_type key_type;