Month: Mai 2012

0

C++ Networking als Teil des Standards

Posted on by

Natürlich wird es nich ein paar Jahre dauern bis aus der Ankündigung, dass eine Arbeitsgruppe die Arbeit aufnimmt letztlich ein Standard wird, aber es geht vorwärts.

Im Oktober will die Study Group 4 Ideen zur Standardisierung zur Netzwerkprogrammierung vorstellen: IPv4 und IPv6-Adressen, Adressen auflösen, Ports und URIs, Datagramm- und Netzwerk-Streams sowie ein erstes SSL-Interface. Auf dieser Basis sollen dann später höhere Protokolle wie HTTP und FTP aufgesetzt werden.

Bis dahin bittet die Gruppe um die Einreichung von Vorschlägen für ein Socket Interface, das zum Standard werden könnte.

Angenommen jemand schreibt ein Buch. Natürgemäß sind in dem Buch ein paar Fehler und man habe nur nette Leser, die Fehler finden und für die 2. Auflage mitteilen.

Der Einfachheit halber sind hier mal alle Fehler gleich schwer zu entdecken (als Wahrscheinlichkeit gesprochen: Es ist gleich wahrscheinlich den einen oder den anderen Fehler zu finden).

So trudeln nette Leserkommentare mit Hinweisen auf Fehler ein. Irgendwann wird ein Fehler das zweite Mal genannt werden.

Was kann man als Schätzung über die Anzahl der Fehler in dem Buch aussagen, wenn die siebte Meldung das erste Mal einen Fehler das zweite Mal beschreibt?


In den Kommentaren ist Platz für Lösungen und Diskussionen 😉


0

Posted on by

0

Effective C++11 — Scotts erste Ideen

Posted on by

Scott Meyers hat erste Ideen zu seinen Empfehlungen für ein potentielles Effective C++11.

Einige Kandidaten findet man indirekt auch in C++11 programmieren

  • „Prefer auto to Explicit Type Declarations“ — die Vorteile werden in [typeinfer.auto] besonders beschrieben, aber auch an vielen anderen Stellen
  • „Prefer non-member begin/end to member versions“ — Ausführlich in [syntax.for] besprochen
  • „Be Wary of Default Capture Modes in Lambdas Escaping Member Functions“ — Thema in [lambda.args]
  • „Pass std::launch::async if Asynchronicity is Essential“ — wird in [thread.async] erwähnt
  • „Distinguish Rvalue References from Universal References“ — Der Unterschied zwischen & und && wird in [rval.intro] besprochen.
  • „Prefer Lambdas over Binders“ — die Vorteile stehen auch in [func.funcobjs]
  • „Apply std::forward when Passing Universal References“ — ausführlich in [rval.forward] erklärt
  • „Prefer std::array to Built-in Arrays“ — wird in [stl.algorithm] angerissen
  • „Use std::make_shared Whenever Possible“ in [stl.shptr] begründet
  • „Reserve noexcept for Functions with Wide Interfaces“ — auch empfohlen in [std.noexcept]
  • „For Copyable Types, View Move as an Optimization of Copy“ — angerissen in [class.delete]
  • „Prefer enum classes to enums“ — begründet mit Beispielen in [enum.typed]
  • „Prefer nullptr to NULL and 0 — exakt wie in syntax.nullptr beschrieben

Ich freue mich jedoch darauf, wieder eine exzellente Zusammenfassung und Begründung von Scott Meyers in den Händen zu halten!