7
benim bir kavram olduğunu varsayalım:Kavramdan tip nasıl alınır?
template < typename Group > concept bool GGroup =
requires() { typename Group::Inner; };
kısa formda kavramını kullanırken
nasıl türünü Inner
alabilirsiniz ?
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;
}
Uzun biçim kullanımına ne dersiniz: 'template void doSomething (const Grup & grup) {... Grup :: İç ...}'? –
ach
@AndreyChernyakhovskiy Evet, ama asıl mesele bunu daha kısa biçimde yapmaktır. – Vahagn
O zaman kendi amacınızı yenersiniz. Kısa formu (gerçek noktası gerçek tipteki gereksiz referansı ortadan kaldırmak için) kullanamazsınız ve aynı zamanda gerçek tipe de başvurunuz. Dil tasarımcıları için 'GGroup :: Inner' gibi bir şey yoktu çünkü belirsiz olurdu. Şunu düşünün: Eğer void doSomething (const GGroup & group1, const GGroup & group2) 'niz varsa,' template void doSomething (const Group1 & group1, const Group2 & group2) 'ile eşdeğerdir. Hangi GGroup' sonra başvuruyor? –
ach