【发布时间】:2020-05-01 15:56:24
【问题描述】:
我正在尝试实现以下概念
template<typename T>
concept GameLogic = requires(T a) {
typename T::StateType;
typename T::EventType;
{ a.initialState()->T::StateType }; // <-- relevant bit
};
我要强加 initialState() 返回类型是同一类的嵌套类型。
概念定义不会引发错误(gcc 9.2),但GameLogic 的以下实现无法满足要求:
class SimpleGameLogic {
public:
using StateType = SimpleState;
using EventType = SimpleEvent;
StateType initialState() {
return _initialState;
}
private:
StateType _initialState;
};
我已经尝试了上述语法的一些变体,但找不到合适的...或者这可能还没有实现?我做错了什么?
【问题讨论】:
标签: c++ c++20 c++-concepts