是概念定义的主体还是要求块未评估的上下文?例如。我可以安全使用std::declval吗?

template<typename T>
concept bool SomeConcept = requires(T a) {
    { a.someFunction(std::declval<int>()) } -> int;
};

最佳答案

是。在[temp.constr.expr]中,措辞从N4641开始:



因此,使用declval应该没问题。

或者,您可以只创建所需类型的对象,因为在需求的上下文中,我们实际上并没有构造任何东西:

template<typename T>
concept bool SomeConcept = requires(T a, int i) {
    { a.someFunction(std::move(i)) } -> int;
};

关于c++ - 需求主体是未评估的上下文吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43475730/

10-15 07:03