C++Guns – RoboBlog

14.03.2019

C++ Guns: floating point bit round - p0476r2 Bit-casting object representations

Filed under: Allgemein — Tags: — Thomas @ 10:03

C++20 Low-level code often seeks to interpret objects of one type as another: keep the same bits, but obtain an object of a different type. Doing so correctly is error-prone: using reinterpret_cast or union runs afoul of type-aliasing rules yet these are the intuitive solutions developers mistakenly turn to. Attuned developers use aligned_storage with memcpy, […]

06.03.2019

Profiler read/write miss Gedanken

Filed under: Allgemein — Tags: — Thomas @ 16:03

Profiler read/write miss Gedanken write miss: unterscheiden zwischen permanenten und temporäre Daten: Permanente Daten: wohl unausweichlich, denn die neuen Daten MÜSSEN ja vom Chache in den Hauptspeicher geschrieben werden. Temporäre Daten: eventuell vermeidbar, wenn man sie an einer späteren Stelle im Code erstellt. Wann immer Daten in den Cache geschrieben werden, fliegen andere Daten raus […]

02.03.2019

C++ Guns: A Sorted Data Type

Filed under: Allgemein — Tags: — Thomas @ 18:03

Mit dem C++ Typsystem ist es möglich Informationen und Algorithmen in das Programm zu codieren, die schon vor der Compilezeit fest stehen. Wie würdet ihr folgendes Problem lösen: Ein Algorithmus, zum Beispiel die binäre Suche, benötigt einen bereits sortieren Datensatz. Den Datensatz zu sortieren und danach die Suche anzuwenden ist trivial. Aber in einem anderen […]

22.02.2019

C++ Guns: rvalue referenz, forwarding referenz, universal referenz WTF?

Filed under: Allgemein — Tags: — Thomas @ 18:02

Die gute Nachricht: Normale Menschen müssen das alles nicht verstehen. Auch Anwendungs- Programmierer und library designer brauchen die Details nicht zu wissen. Ihr könnt meine Regeln durchlesen, daran halten und dann STOP. Die Details sind für Leute, die sich einem 1.5h Vortrag über && anhören können. Streng genommen wird der Begriff "universal referenz" nicht im […]

C+ Guns: ACPL ownership transfer

Filed under: Allgemein — Tags: — Thomas @ 18:02

acpl::moveOwnership bietet im Gegensatz zu std::move den Vorteil, dass ein move-from const Variablen einen Fehler zur Compilezeit erzeugt. Zwei Beispiele sollen ownership transfer verdeutlichen. Daten in ein Type moven und dort speichern. Daten entweder kopieren oder durch eine Funktion moven. Move von const Variablen ist nicht möglich, da die Variablen geändert werden würden, was nicht […]

15.02.2019

C++ Guns: class template specialization with concepts aka C++20 std::ranges::value_type

Filed under: Allgemein — Tags: — Thomas @ 20:02

You can create a constrain for a class. And another constrain for the same class. Isn't this crazy stuff? With this we can build something like an identity function for types, like std::type_identity, for value_type. It's something like the C++17 non-member functions size() and empty(). Why must value_type be a member? It can be a […]

03.02.2019

C++ Guns: ACPL proudly presents: Histogram2D

Filed under: Allgemein — Tags: — Thomas @ 21:02

See also ACPL: Histogram1D ACPL: BinaryHeap Create even 2D Histogram in a fast and intuitive way. Define TWO access functions, Axis, Range, Titles, get stochastic moments for every dimension. Enjoy the 2D ASCII art output. See source code and more code examples at ACPL Histogram 2D City temperature VS air pressure Axis: temp [degree] Number […]

C++ Guns: ACPL proudly presents: Histogram1D

Filed under: Allgemein — Tags: — Thomas @ 21:02

See also ACPL: Histogram2D ACPL: BinaryHeap Create 1D Histogram in a fast and intuitive way. Define an Axis, Range, Title, get stochastic moments. Enjoy the ASCII art output. See source code and more code examples at ACPL Histogram 1D City temperature Axis: temp [degree] Number of bins: 50 bin width 0.242 Under/ Overflow count: 0 […]

30.01.2019

C++ Guns: C++20 Aggregates can no longer declare constructors

Filed under: Allgemein — Tags: — Thomas @ 21:01

ENDLICH! Ab GCC 9. P1008 Prohibit aggregates with user-declared constructors Initialization in modern C++ - Timur Doumler - Meeting C++ 2018

27.01.2019

C++ Guns: Stop using std::endl start using acpl::newline and std::clog std::cerr

Filed under: Allgemein — Tags: — Thomas @ 13:01

Schaut euch mal C++ Weekly - Ep7 Stop Using std::endl an. Eigentlich hat er ja recht, std::endl wird nicht gebraucht. Problem damit (wie immer), es macht mehr als man vermutet. Denn "end line" suggeriert nicht, dass nun ein Zeilenumbruch kommt und auch kein flush(). Das ganze hat bestimmt wieder historische Gründe. Jedenfalls gibt es neben […]

Older Posts »

Powered by WordPress