gpt4 book ai didi

c++ - 接受类型或模板作为参数的模板

转载 作者:行者123 更新时间:2023-11-30 03:40:24 25 4
gpt4 key购买 nike

是否可以有一个接受类型或模板作为其模板参数的模板?

我尝试了以下使用部分模板特化的方法,但失败了:

#include <type_traits>

template <template <typename...> class T>
struct TemplateHolder;

template <typename T>
struct Trait : std::true_type {};

template <template <typename...> class Template>
struct Trait<TemplateHolder<Template>> : std::true_type {};

template <typename... Ts>
struct Foo {};

struct Bar {};

static_assert(Trait<Bar>::value, "");
static_assert(Trait<Foo>::value, "");

来自 GCC 的错误消息:

main.cpp:18:24: error: type/value mismatch at argument 1 in template parameter list for 'template<class T> struct Trait'

static_assert(Trait<Foo>::value, "");
^
main.cpp:18:24: note: expected a type, got 'Foo'

live example

最佳答案

static_assert(Trait<TemplateHolder<Foo>>::value, "");

不再是语法错误。您必须自己将模板插入支架。

除此之外,不,你要求的是行不通的。

关于c++ - 接受类型或模板作为参数的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38049844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com