gpt4 book ai didi

C++模板特化问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:25:38 24 4
gpt4 key购买 nike

我需要一个 C++ 模板,在给定类型和该类型的对象的情况下,它可以根据类型是否为整数做出决定,同时能够访问实际对象。我试过了

template <typename T, T &N>
struct C {
enum { Value = 0 };
};

template <int &N>
struct C<int, N> {
enum { Value = N };
};

但它不起作用。有什么方法可以实现类似的目标吗?

编辑

我试图实现的是这样的,它会在编译时发生:

if (type is int) {
return IntWrapper<int_value>
else {
return type
}

您实际上可以将指针或引用传递给模板实例化中的对象,如下所示:

struct X {
static const int Value = 5;
};

template <X *x>
struct C {
static const int Value = (*x).Value;
};

X x;

std::cout << C<&x>::Value << std::endl; // prints 5

但显然所有这些完成的是通过推断x 的类型来初始化模板,并且x 也需要全局声明。对我正在尝试做的事情毫无用处,我认为这毕竟在编译时是不可能的。

最佳答案

您尝试做的不是有效的 C++ 模板。您不能使用任意对象作为模板参数,您只能使用类型、整数文字以及在某些特殊情况下的字符串文字。

关于C++模板特化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/910542/

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