gpt4 book ai didi

c++ - c++中的依赖类型,非零类型

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

让我们说这是一个非可归零类型的基本框架。

template<typename T>
struct NonZero {
T val;
};

我的问题是,是否可以为 NonZero 创建一个构造函数,它采用 T 类型的文字并静态检查它是否非零,然后将其分配给val.

NonZero<int> n( 0 ); // compilation error
NonZero<int> n( 1 ); // ok

或者是否有更好的方法来实现非零类型?

最佳答案

由于该值在编译时已知,您可以将其作为模板参数并使用 std::enable_if:

template<typename T, T x>
struct NonZero {
const static std::enable_if_t<x != T(0), T> value = x;
};

用法:

int x = NonZero<int, 1>::value; // OK
int x2 = NonZero<int, 0>::value;// Compilation error

关于c++ - c++中的依赖类型,非零类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209384/

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