假设我有一个概念:
template < typename Group > concept bool GGroup = requires() { typename Group::Inner; };
如何检索类型 Inner 当使用简短形式的概念时?
Inner
void doSomething(const GGroup& group) { // an ugly alternative using Inner = typename std::decay_t<decltype(group)>::Inner; //// could be something like: // using Inner = GGroup::Inner; // or // using Inner = underlyingtype(GGroup)::Inner; }
概念短形式TS的内在缺点是,您不能仅命名概念化参数的类型名。你必须使用 decltype 得到它。
decltype
template 以牺牲更多为代价的申报 脱模 在您的实际代码中,或者您可以避免 脱模 以显式模板声明为代价。
template
脱模