Я использую несколько «мета-методов» для обнаружения сигнатур вызовов во время компиляции. Хотя это решение помогает мне, это только из-за моего довольно специфичного выбора подписи. Это решение не является достаточно универсальным, как показано в приведенном ниже коде, неявное преобразование может легко привести к ложному срабатыванию из-за вседозволенности std::is_invocable....
Я использую несколько «мета-методов» для обнаружения сигнатур вызовов во время компиляции. Хотя это решение помогает мне, это только из-за моего довольно специфичного выбора подписи. Это решение не является достаточно универсальным, как показано в приведенном ниже коде, неявное преобразование может легко привести к ложному срабатыванию из-за вседозволенности std::is_invocable.... [code]#include #include
template static constexpr auto canCallWith() { return std::is_invocable_v; }
template static constexpr auto canRetWith() { return std::is_same::value; }
template static constexpr auto sigmatch() { if constexpr (canCallWith()) { if constexpr (canRetWith()) { return true; } } return false; }