gpt4 book ai didi

c++ - 概念-如何限制积分模板值

转载 作者:行者123 更新时间:2023-12-02 09:49:24 25 4
gpt4 key购买 nike

有一个模板定义,例如:

template<size_t N>
void foo( void ) {
/* ... */
}

如何定义一个概念,以便 N必须为非零正值(N> = 1)?

就像是:
template<size_t N>
concept NonZeroSize = /* to be implemented, N>=1 */

template<NonZeroSize N>
void foo( void ) {
/* Do whatever only if N >= 1 */
}

谢谢!

最佳答案

像这样:

template <size_t N> requires NonZeroSize<N>
void foo();

要不就:
template <size_t N> requires (N > 0)
void foo();

terser形式保留用于类型概念。

概念定义本身只是一个任意的 bool(boolean) 表达式:
template <size_t N>
concept NonZeroSize = (N > 0);

requires-expression只是一种特殊的表达形式,在定义概念时非常有用,但是既不必在所有概念定义中使用它,也不必首先出现在概念定义中。这些东西是正交的。

关于c++ - 概念-如何限制积分模板值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61598872/

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