说我有一个概念:
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;
}
答案 0 :(得分:3)
概念TS的简短形式的内置缺点是,您不能仅仅命名概念化参数的类型名称。您必须使用decltype
才能获得它。
所以你有一个权衡:你可以避免在实际代码中以更多template
为代价而明确decltype
声明,或者你可以避免以decltype
为代价明确的模板声明。