gpt4 book ai didi

c++ - 声明属于所有特化的类模板成员

转载 作者:行者123 更新时间:2023-12-05 09:03:59 25 4
gpt4 key购买 nike

我正在寻找的是一种表达方式:这对所有特化都是一样的:

template <typename T>
struct Foo {
using id_type = unsigned int; // this does not depend on T!
};

Foo::id_type theId; // Doesn't matter what the specialization is, id_type is always the same.

我想访问 id_type 而无需指定特化...

最佳答案

你不可能得到你想要的。 Foo不是一个类。 Foo<T>是一个类,对于任何 T .

您可以有一个包含 id_type 的非模板库

struct FooBase {
using id_type = unsigned int;
};

template <typename T>
struct Foo : FooBase{};

FooBase::id_type theId;

您可以为 T 提供默认参数

template <typename T = struct FooPlaceholder>
struct Foo {
using id_type = unsigned int; // this does not depend on T!
};

Foo<>::id_type theId;

然而,没有什么能阻止我编写 Foo 的显式特化缺少(或重新定义)id_type .

template <> struct Foo<MyType> { };    
template <> struct Foo<MyOtherType> { int id_type = 42; };

关于c++ - 声明属于所有特化的类模板成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69282015/

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