2015-12-20 9 views
8

Bildiğim kadarıyla, C++ 17 için tekdüze çağrı sözdizimi için iki yöntem vardır (diğeri birleşik çağrı sözdizimi olarak adlandırılır).Tek tip çağrı sözdizimi için C++ 17 teklifi, ad alanlarını işlemeyi nasıl amaçlıyor?

Bunları okurken, ad alanlarını nasıl ele almayı planladıklarını anlayamıyorum.

Örnek

:

class Class {...} 
namespace MyNamespace { 
    void f(Class x, Class y); 
} 

gibi bir şey kullanarak bu yöntemi çağırmak mümkün olacak mı:

Class a, b; 
a.MyNamespace::f(b); 

Ya özgür fonksiyonunu ve sınıf ikisini de aynı ad alanında tanımlanması gerekir ?

Kaynaklar:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4174.pdf

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4165.pdf

+0

i gerçekten temiz olmadığını bulacağını C++ standardına ilave fonksiyon aramaların zincirleme sağlayan böyle bir şey. Boru operatörü, boost aralığı ve Eric Nieblers range v3'ün kullanılması oldukça karmaşıktır (artı, == =) dan daha yüksek bir sevecin önceliğine sahip olma dezavantajına sahiptir.) –

+3

Geçerli EWG yönü, 'f (x, y)' '' '' ''' (y) eğer sıradan bir arayış, bir 'f' uygulanabilirliğini bulmakta başarısız olursa, tersine değil. Henüz tüm detayları çözecek bir kağıt olduğunu düşünmüyorum, ancak nitelikli aramalara dokunmak istiyorlarsa şaşırırım. –

+0

Bunu yapmadı ve evet şaşıracaktım, ama verry mutlu! –

cevap