相关疑难解决方法(0)

使用默认的其他模板参数推导出第一个模板参数

Gcc和clang似乎不同意这段代码是否应该编译:

#include <type_traits>

template <typename Signature, int N = 0>
struct MyDelegate { };

template <typename D>
struct signature_traits;

template <template <typename> class Delegate, typename Signature>
struct signature_traits<Delegate<Signature>>
{
    using type = Signature;
};

static_assert(std::is_same_v<
    void(int, int),
    signature_traits<MyDelegate<void(int, int)>>::type
>);
Run Code Online (Sandbox Code Playgroud)

在这里查看godbolt输出并尝试一下.我在这里支持clang,但是C++标准对此有何看法?

一个后续问题 - 这可以用于铿锵声吗?

c++ templates language-lawyer template-meta-programming c++17

14
推荐指数
1
解决办法
445
查看次数