2015-08-18 8 views
6

Andrew Sutton tarafından yapılan bir dizi görüşme ve makalede belirtildiği üzere, Concepts Lite önerisi konsept tabanlı aşırı yükleme özelliğine sahiptir ve aynı zamanda kavram haritası kavramı yoktur, yani şablon argümanları tamamen bir derleyici tarafından kavramlara karşı kontrol edilir. Buna göre, 2005'te Siek ve Gregor'un “Explicit model definitions are necessary” adlı makalesinde açıklanan bir sorunu nasıl çözecekleri açık değildir. Kısacası, problem, aşağıdaki alıntı ile bildirilebilir.Açık modeller olmaksızın konsept tabanlı aşırı yüklenmeyle ilgili sorunları nasıl önlerler (aka kavram haritaları)

So, there are certain input iterator types (such as istream_iterator) that would be misclassified as forward iterators. What is the danger in this? Some algorithms dispatch based on Input_iterator vs. Forward_iterator.

Evet, 0x kavramlar ++ C olarak kabul belirtilen kağıt üstünde Bunun farkındayım (Orada Yineleyicilerin yanında örnek daha verilmiştir. Gerçi vardır), ama sorun kavramlar üzerinde “genel” olarak görünüyor önerileri.

cevap

3
n3351 A Concept Design for the STL yılında öneri yineleyici kategori etiketleri kullanmaya devam etmektir

: Eski Kağıttan

template<typename I> 
concept bool InputIterator = 
    WeakInputIterator<I>() && EqualityComparable<I>() && 
    Derived<IteratorCategory<I>, input_iterator_tag>(); 

: n4377 C++ Extensions for Concepts başına standart haline eklenmek üzere beklenen sözdiziminde

concept InputIterator<WeakInputIterator I> = 
    EqualityComparable<I> && 
    Derived<IteratorCategory<I>, input_iterator_tag>; 

Genel olarak, semantik yeniden ifade edilebilir. Bir tür yüklemeyi kontrol ederek quirements (ör. Yalnızca bir çalışma zamanı semantiği iddiası amacıyla var olan bir iç içe tip veya sabit veya bir tür işlev).

+0

@Columbo n4377 sözdiziminde yeniden yazmayı denedim; lütfen doğru mu aldığımı kontrol edin (şu an Concepts özellikli bir derleyiciye erişimim yok). – ecatmur

+1

Bulunduğunuz sözdizimi doğruydu, ancak parametrelerinden bahsetmek gerekmiyorsa, bir ifade ifadesine ihtiyaç duyulmaması nedeniyle biraz garip. Bunu basitleştirdim. – Casey

+0

@Casey parlak, teşekkürler. – ecatmur

İlgili konular