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