7
说我有一个概念:如何从概念中检索类型?
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;
}
如何使用长格式:'template void doSomething(const Group&group){... Group :: Inner ...}'? –
ach
@AndreyChernyakhovskiy是的,但重点是以较短的形式做到这一点。 – Vahagn
然后你打败你自己的目的。您不能使用简短的表格(其中的一点是消除对实际类型的不必要的引用),并且同时参考实际类型。对于语言设计者来说,像GGroup :: Inner这样的东西不是一种选择,因为它不明确。考虑:如果你有'void doSomething(const GGroup&group1,const GGroup&group2)',它就等于'template void doSomething(const Group1&group1,const Group2&group2)''。那么'GGroup'会指哪一个? –
ach