@@ -182,7 +182,7 @@ namespace n
182182 // Unrecognized __PRETTY_FUNCTION__/__FUNCSIG__ formats will result in compiler diagnostics.
183183 // In that case, please file an issue on https://github.com/boostorg/leaf.
184184
185- #define BOOST_LEAF_P (P ) (sizeof (char [1 + detail::check_prefix(BOOST_LEAF_PRETTY_FUNCTION, P )]) - 1 )
185+ #define BOOST_LEAF_P (P ) (sizeof (char [1 + detail::check_prefix(BOOST_LEAF_PRETTY_FUNCTION, (P) )]) - 1 )
186186 // clang style:
187187 std::size_t const p01 = BOOST_LEAF_P (" r boost::leaf::n::p() [T = " );
188188 std::size_t const p02 = BOOST_LEAF_P (" r __cdecl boost::leaf::n::p(void) [T = " );
@@ -216,7 +216,7 @@ namespace n
216216 std::size_t const p24 = BOOST_LEAF_P (" struct boost::leaf::n::r __fastcall boost::leaf::n::p<" );
217217#undef BOOST_LEAF_P
218218
219- #define BOOST_LEAF_S (S ) (sizeof (char [1 + detail::check_suffix(BOOST_LEAF_PRETTY_FUNCTION, S )]) - 1 )
219+ #define BOOST_LEAF_S (S ) (sizeof (char [1 + detail::check_suffix(BOOST_LEAF_PRETTY_FUNCTION, (S) )]) - 1 )
220220 // clang/gcc style:
221221 std::size_t const s01 = BOOST_LEAF_S (" ]" );
222222 // msvc style:
@@ -234,14 +234,16 @@ namespace n
234234 ) * 2 - 1 ];
235235 (void ) static_assert_unrecognized_pretty_function_format_please_file_github_issue;
236236
237+ #define BOOST_LEAF_COMPUTE_TYPE_HASH (P, S ) detail::compute_hash<sizeof (char [(1 + (P))]) - 1 , sizeof (char [(1 + (S))]) - 1 >(BOOST_LEAF_PRETTY_FUNCTION)
237238 if ( std::size_t const p = sizeof (char [1 + !!s01 * (p01 + p02 + p03 + p04 + p05 + p06 + p07 + p08 + p09 + p10 + p11 + p12)]) - 1 )
238- return { BOOST_LEAF_PRETTY_FUNCTION + p, s01 - p, detail::compute_hash< p, s01>(BOOST_LEAF_PRETTY_FUNCTION ) };
239+ return { BOOST_LEAF_PRETTY_FUNCTION + p, s01 - p, BOOST_LEAF_COMPUTE_TYPE_HASH ( p, s01) };
239240
240241 if ( std::size_t const p = sizeof (char [1 + !!s02 * (p13 + p14 + p15 + p16 + p17 + p18 + p19 + p20 + p21)]) - 1 )
241- return { BOOST_LEAF_PRETTY_FUNCTION + p, s02 - p, detail::compute_hash< p, s02>(BOOST_LEAF_PRETTY_FUNCTION ) };
242+ return { BOOST_LEAF_PRETTY_FUNCTION + p, s02 - p, BOOST_LEAF_COMPUTE_TYPE_HASH ( p, s02) };
242243
243- std::size_t const p = sizeof (char [1 + !!s02 * (p22 + p23 + p24)]) - 1 ; // p is not zero, we've static asserted the hell out of it
244- return { BOOST_LEAF_PRETTY_FUNCTION + p, s02 - p, detail::compute_hash<p, s02>(BOOST_LEAF_PRETTY_FUNCTION) };
244+ std::size_t const p = sizeof (char [1 + !!s02 * (p22 + p23 + p24)]) - 1 ;
245+ return { BOOST_LEAF_PRETTY_FUNCTION + p, s02 - p, BOOST_LEAF_COMPUTE_TYPE_HASH (p, s02) };
246+ #undef BOOST_LEAF_COMPUTE_TYPE_HASH
245247 }
246248} // namespace n
247249
0 commit comments