C++ 检查2个函数签名是否相同

template<typename F>
struct FuncSignature {};

template<typename R, typename...Args>
struct FuncSignature<R(Args...)>
{
    using type = std::tuple<Args...>;
};

#define CHECK_SIGNATURE(FUNC1, FUNC2) \
static_assert(\
    std::is_same_v< \
    typename FuncSignature<decltype(FUNC1)>::type, \
    typename FuncSignature<decltype(FUNC2)>::type \
    >, \
    #FUNC1 "和" #FUNC2 "形参列表不匹配"\
)
posted @ 2026-03-02 09:32  小松鼠树懒  阅读(13)  评论(0)    收藏  举报