leftibot d60f8fed73
Fix #612: Allow fun<Signature>(&overloaded) for overload disambiguation (#701)
The cheatsheet's "preferred" syntax for binding overloaded free functions,
fun<Ret(Args...)>(&overloaded), only worked on MSVC because the existing
fun<T>(T&&) overload sets T to a function type when called explicitly,
which produces a function rvalue-reference parameter that does not match
a function pointer argument. Standards-conforming compilers (clang, GCC
in some modes) correctly rejected it.

Added two new fun overloads, parameterized on the explicitly-supplied
function-type Signature and using std::type_identity_t to keep that
parameter non-deducible, so they only participate in overload resolution
when Signature is given explicitly. One accepts a free function pointer,
the other a pointer-to-member, enabling both fun<Ret(Args...)>(&free_fn)
and fun<Ret(Args...) cv>(&Class::method) to disambiguate overloads
without resorting to static_cast.

Co-authored-by: leftibot <leftibot@users.noreply.github.com>
2026-05-02 14:43:11 -06:00
..
any.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
bad_boxed_cast.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
bind_first.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
bootstrap_stl.hpp Fix #470: Expose find() for associative container types (#668) 2026-04-11 18:57:26 -06:00
bootstrap.hpp Enable warnings as errors (#694) 2026-04-28 20:11:15 -06:00
boxed_cast_helper.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
boxed_cast.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
boxed_number.hpp Enable warnings as errors (#694) 2026-04-28 20:11:15 -06:00
boxed_value.hpp Fix #17: Add const variables in ChaiScript (#643) 2026-04-10 22:12:13 -06:00
callable_traits.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
dispatchkit.hpp Fix #633: [Bug] Stack-overflow due to infinite recursion in user-defined operator (string interpolation) (#700) 2026-05-02 11:38:01 -06:00
dynamic_object_detail.hpp Fix #690: Apply clang-format consistently with CI (#691) 2026-04-17 18:45:41 -06:00
dynamic_object.hpp Fix #690: Apply clang-format consistently with CI (#691) 2026-04-17 18:45:41 -06:00
exception_specification.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
function_call_detail.hpp Fix #493: Allow shared_ptr arguments through std::function callbacks (#696) 2026-05-02 10:36:18 -06:00
function_call.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
function_params.hpp Enable warnings as errors (#694) 2026-04-28 20:11:15 -06:00
function_signature.hpp Fix #690: Apply clang-format consistently with CI (#691) 2026-04-17 18:45:41 -06:00
handle_return.hpp Fix #690: Apply clang-format consistently with CI (#691) 2026-04-17 18:45:41 -06:00
operators.hpp Fix #601: Allow operator functions to accept any type with an add() method (#686) 2026-04-13 20:20:11 -06:00
proxy_constructors.hpp change .clang-format and reformat code with clang-format 11 2021-05-24 10:44:15 +02:00
proxy_functions_detail.hpp 🎨 Committing clang-format changes 2026-04-29 02:22:59 +00:00
proxy_functions.hpp Enable warnings as errors (#694) 2026-04-28 20:11:15 -06:00
register_function.hpp Fix #612: Allow fun<Signature>(&overloaded) for overload disambiguation (#701) 2026-05-02 14:43:11 -06:00
type_conversions.hpp Fix #374: Support nested vector type conversions (#692) 2026-04-18 12:57:20 -06:00
type_info.hpp Fix #17: Add const variables in ChaiScript (#643) 2026-04-10 22:12:13 -06:00