如何从概念中检索类型?

假设我有一个概念:

template < typename Group  > concept bool GGroup =
    requires() { typename Group::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;
}

Concepts TS简短形式的内置缺点是,您不能只命名概念化参数的类型名称。 你必须使用decltype来获取它。

所以你有一个权衡:你可以避免有一个明确的template声明,代价是实际代码中更多的decltype ,或者你可以避免以明确的模板声明为代价的decltype

链接地址: http://www.djcxy.com/p/37213.html

上一篇: How to retrieve type from the concept?

下一篇: compile a gnulib based project to MinGW