__cplusplus User Group issueshttps://git.gsi.de/SDE/cxx-user-group/-/issues2021-12-14T10:42:14Zhttps://git.gsi.de/SDE/cxx-user-group/-/issues/26Constexpr, Strict type-checking & mp-units2021-12-14T10:42:14ZMatthias KretzConstexpr, Strict type-checking & mp-unitsMeeting 21-48Ralph J. SteinhagenRalph J. Steinhagenhttps://git.gsi.de/SDE/cxx-user-group/-/issues/8std::span — getting rid of pointer and size2022-05-16T07:43:16ZMatthias Kretzstd::span — getting rid of pointer and sizeC++ does not support passing around variably sized arrays by value. The closest is to pass `std::vector<T>`. But you don't always have your data in the exact `std::vector<T>` chunks to make that a viable interface. So instead, we pass a ...C++ does not support passing around variably sized arrays by value. The closest is to pass `std::vector<T>`. But you don't always have your data in the exact `std::vector<T>` chunks to make that a viable interface. So instead, we pass a pointer to the start of the array and an integer to tell the function how many elements after the pointer are valid array accesses. Example: you have a `vector<int> data` and want to pass the elements from index `n` to `n+16` to a function. `std::span` abstracts this use case and integrates more or less into the APIs of the C++ standard library.Meeting 22-18a.krimma.krimmhttps://git.gsi.de/SDE/cxx-user-group/-/issues/13type punning / strict aliasing / proper casts2022-07-21T06:22:49ZMatthias Kretztype punning / strict aliasing / proper casts* C casts
* `reinterpret_cast`
* `std::memcpy`
* [`std::bit_cast`](https://en.cppreference.com/w/cpp/numeric/bit_cast)
* [start_lifetime_as](https://wg21.link/p0593)
* aliasing rules* C casts
* `reinterpret_cast`
* `std::memcpy`
* [`std::bit_cast`](https://en.cppreference.com/w/cpp/numeric/bit_cast)
* [start_lifetime_as](https://wg21.link/p0593)
* aliasing rulesMeeting 22-29m.alfonsim.alfonsihttps://git.gsi.de/SDE/cxx-user-group/-/issues/34Yet-Another-Serialiser (YAS)2023-02-09T08:55:01ZRalph J. SteinhagenYet-Another-Serialiser (YAS)### or: why we are not reusing and opted to write yet another custom data serialiser
* Serialisation is key when information has to be transmitted, stored and later retrieved by (often quite) different subsystems, architectures and/or p...### or: why we are not reusing and opted to write yet another custom data serialiser
* Serialisation is key when information has to be transmitted, stored and later retrieved by (often quite) different subsystems, architectures and/or programming languages.
with a multitude of different serialiser libraries, a non-negligible subset of these claim to be the fastest, most efficient, easiest-to-use or <add your favourite superlative here>
this is true for most libraries' original use-case but often breaks down for other applications.
* This talk aims at motivating our compile-time reflection based approach used in OpenCMW
[supporting slides](/uploads/5fbe8245d5c4100e5ed0a1cb2d789464/20221012_Cpp_UG_Meeting_Serialiser.pdf)
[supporting slides (expanded)](/uploads/114531b93342bab164635a6c5edc6494/20221012_Cpp_UG_Meeting_Serialiser-expanded.pdf)
[supporting slides (sources)](/uploads/4efb5dcd59f2266a3855f258a6f8a762/20221012_Cpp_UG_Meeting_Serialiser.odp)Meeting 22-41Ralph J. SteinhagenRalph J. Steinhagenhttps://git.gsi.de/SDE/cxx-user-group/-/issues/2SFINAE, enable_if, and an outlook to Concepts2024-02-21T16:26:48ZMatthias KretzSFINAE, enable_if, and an outlook to ConceptsC++ has an important feature called “Substitution Failure Is Not An Error”. Meaning, if implicit template argument substitution leads to an error, the expression is simply ignored and the error never becomes visible to the user. With thi...C++ has an important feature called “Substitution Failure Is Not An Error”. Meaning, if implicit template argument substitution leads to an error, the expression is simply ignored and the error never becomes visible to the user. With this it is then possible to have very fine-grained control over overload resolution.
C++20 has a much nicer syntax for this task with additional semantics, called concepts, changing the way we define generic interfaces. This talk will give a brief outlook to C++20's concepts feature.Matthias KretzMatthias Kretz2024-02-21