Consider letting the user specify which templates are used for SFINAE, and what the controlling params are. The current SFINAE detecting algorithm is limited, and the SFINAE space is unbounded.
The tool should out-of-the-box support std::enable_if
, std::enable_if_t
, and std::void_t
. Whether to also support others like std::invoke_result
, std::iterator_traits
, etc is less clear.