nullptr
'un derleyici desteğini beklemekten yoruldum (gcc 4.6 does ancak yeni dağıtımlar bunu destekliyor).Mükemmel nullptr öykünür
nullptr
tamamen desteklenene kadar bir durma boşluğu olarak öykünmeye karar verdim. İki emülasyon örneği vardır: biri here ve bir tanesi wikibooks.
Not, hiçbir uygulamada operator ==
belirtilmez. Ancak, bir, aşağıdaki kod will not compile.
int* ptr = nullptr;
assert(ptr == nullptr); // error here: missing operator ==
Bu operator ==
hatası derleyici bir hata mı?
nullptr
(!=
, <
, <=
, vb.) nullptr
'yi daha iyi taklit etmek için gerekli mi?
Öykünülmüş bir nullptr
ile gerçek anlaşma arasındaki fark nedir?
Neden bunu yerine "assert (ptr);" yerine yerine yaparsın? – ildjarn
@Neil Butterworth: Bu doğru değil. 'nullptr' Standard'ın bir parçası olmalı çünkü sadece herkesin aynı boş gösterici türünü kullandığı bir değer var; std :: nullptr_t'. Herkes kendi null işaretçisini uyguladıysa, boş göstericiyi kabul edecek bir işlev nasıl yazardınız? Boş gösterici türünün ne olduğunu bilmiyorsunuz. – Puppy
@ildjarn: Kodu temizlemek için bir onaylama kullandım. Benim asıl örneğim, eşitlik operatörünü kullanan std :: remove (v.begin(), v.end(), nullptr). Ve sadece kullanmamın nedeni std :: remove_if' istemiyorum. Sadece gerçek nullptr gibi çalışmasını istiyorum. –