gpt4 book ai didi

c++ - 如何将概念用作模板参数?

转载 作者:行者123 更新时间:2023-11-30 05:12:22 26 4
gpt4 key购买 nike

我猜这是不可能的,但我真的希望这是可能的。一个例子:

template<class T>
concept bool Dereferencable() { return requires(T t){ *t }; }

template<class T>
concept bool Incrementable() { return requires(T t){ ++t }; }

template<class T, ??? X, ??? Y>
concept bool And() { return X<T>() && Y<T>(); }

static_assert( And<int*, Dereferencable, Incrementable>() );

有没有办法做这样的事情?

如果没有,是否有黑客可以实现相同的功能?

最终我想使用复合概念作为占位符约束。

最佳答案

概念实际上只能以有限的方式使用(截至撰写本文时)。因此,无法实现您想要的结果。

解决方法是将每个概念关联到一个特定的(元)函数,以启用更高阶的使用:

// this is just one way of doing it...
template<typename Arg>
struct is_dereferencable_f {
static constexpr bool value = Dereferencable<Arg>;
};

// ...via template template parameters
template<typename Arg, template<typename> typename... Conjuncts>
concept bool SatisfiesAll = (... && Conjuncts<Arg>::value);

关于c++ - 如何将概念用作模板参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44579440/

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