SORU
5 HAZİRAN 2011, Pazar


Güvenli-bool deyim C 11 kullanılmıyor?

This answer of @R. Martinho Fernandes güvenli-bool deyim apperently C basit tarafından değiştirilebilir olarak 11, kaldırılmış olduğunu gösterir

explicit operator bool() const;

cevap §4 [conv] p3: standart teklif göre

İfade e örtülü bir tip ve eğer Bildirgesi T t=e; iyi biçimlendirilmiş ise, icat edilmiş bir geçici değişken için t T (madde 8.5) dönüştürülebilir. Bazı dil yapıları ifadesi Boolean bir değere dönüştürülmesi gerekir. Bir ifade e böyle bir ortamda görünen olduğu söyleniyorçevreye dönüştürülür7 ** veilan sadece eğer iyi biçimlendirilmiş ise bool t(e); iyi biçimlendirilmişbazı icat geçici değişken t (madde 8.5).

Vurgulanan bir bölümü açıkça göstermektedir "örtülü açık dökme" ("bağlamsal" standart) @R. olarak Martinho koy dönüştürme.

"Bazı dil yapıları" gerektiren "açık döküm" gibi görünüyor şu: . örtülü

  • if, while, for (§6.4 [stmt.select] p4)
  • ikili mantıksal operatörler && || (§5.14 [expr.log.and/or] p1)
  • mantıksal olumsuzluk operatörü ! (§5.3.1 [expr.unary.op] p9)
  • koşullu operatör ?: (§5.14 [expr.cond] p1)
  • static_assert (§7 [dcl.dcl] p4)
  • noexcept (§15.4 [except.spec] p2)

Başlık bizim varsayım doğru mu? Olası sakıncaları göz ardı etmedik umarım.

CEVAP
5 HAZİRAN 2011, Pazar


Evet. Buörneğin sorunları ile sadece örtülü olan kullanıcı tanımlı dönüştürme ve açık bir kullanıcı tanımlı dönüştürme operatörleri vardı resmen invented because of this problem ve yerine tüm güvenli-bool malzeme ile bir şey çok daha temiz ve daha mantıklı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • julioissk84life

    julioissk84l

    18 ŞUBAT 2008
  • Mindy

    Mindy

    20 NİSAN 2006
  • Tahir Jahi

    Tahir Jahi

    6 Mart 2006