gpt4 book ai didi

C++ std::enable_if

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

我对 std::enable_if 很陌生,想知道如何使用它。我有一个模板类:

template<int a, int b>
class foo {
}

现在我只想在 a + b 等于 10 时实例化它。我可以使用 std::enable_if 使这成为可能吗?

第二个问题:如果我在类 foo 中有一个成员

template<int a, int b>
class foo {
int c;
}

我只想在什么时候有c

a = 5. 

我如何使用 std::enable_if 做到这一点?这是使用 std::enable_if 的正确情况吗?

最佳答案

template<int a, int b, typename T = typename std::enable_if<a + b == 10>::type>
class foo {
};

这应该可以完成工作;只需确保在实例化模板时永远不会显式提供第三个模板参数。


正如其他人提到的,static_assert 更合适。

关于C++ std::enable_if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260581/

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