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

  • Joshua Kywn

    Joshua Kywn

    17 Mayıs 2010
  • Matthew Pearce

    Matthew Pear

    9 AĞUSTOS 2009
  • Sergio Fernandez

    Sergio Ferna

    1 EKİM 2009