说我有一个概念:

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

关于c++ - 如何从概念中检索类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40840255/

10-14 15:57