__cplusplus User Group issueshttps://git.gsi.de/SDE/cxx-user-group/-/issues2024-02-21T16:26:48Zhttps://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-21https://git.gsi.de/SDE/cxx-user-group/-/issues/40Conway's Law: "The Only Unbreakable Law" Lecture by Casey Muratori2023-10-29T07:38:36ZRalph J. SteinhagenConway's Law: "The Only Unbreakable Law" Lecture by Casey MuratoriWe wanted to try a novel format to dive into a fascinating topic: Conway’s Law.
This [YouTube Lecture](https://youtu.be/5IUj1EZwpJY) delves into Conway’s Law, exploring the relationship between an organisation's communication structures...We wanted to try a novel format to dive into a fascinating topic: Conway’s Law.
This [YouTube Lecture](https://youtu.be/5IUj1EZwpJY) delves into Conway’s Law, exploring the relationship between an organisation's communication structures and the architectural designs they produce. Muratori shows how cognitive constraints and modern technological advancements shape design efficiency through compelling examples and insights.
Conway, Melvin E.: “How Do Committees Invent?”. In: Datamation (1968) [original paper](/uploads/ba3fa2eddd700e7b50e89564c6ec0f70/Conway__Melvin_E.__How_Do_Committees_Invent_._In__Datamation__1968_.pdf)Ralph J. SteinhagenRalph J. Steinhagen2023-06-14https://git.gsi.de/SDE/cxx-user-group/-/issues/32stdx::simd — generic data-parallelism via type-based vectorization2023-03-09T08:04:29ZMatthias Kretzstdx::simd — generic data-parallelism via type-based vectorizationMeeting 23-08Matthias KretzMatthias Kretzhttps://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/39Discussion: Effective Usage of Version Control Commits2023-02-09T08:32:44ZDennis Kleind.klein@gsi.deDiscussion: Effective Usage of Version Control CommitsMeeting 23-06https://git.gsi.de/SDE/cxx-user-group/-/issues/38WebAssembly: compiling C++ for the web and more2022-11-30T15:41:47Za.krimmWebAssembly: compiling C++ for the web and more- What is Webassembly?
- overview
- differences to traditional c++ programs
- How can C++ be used for applications in the web browser
- compatible UI frameworks: Qt, SDL, imgui
- toolchains and build support
- emcc, emmake, emcmake...- What is Webassembly?
- overview
- differences to traditional c++ programs
- How can C++ be used for applications in the web browser
- compatible UI frameworks: Qt, SDL, imgui
- toolchains and build support
- emcc, emmake, emcmake, toolchain file
- special compiler flags
- limitations
- special solutions
- support wasm and native targets from the same codebase
- embed webassembly artifacts into native server applications using cmake, externalProject and cmakeRC
- running webassembly outside of the webbrowser: node, wasmtimeMeeting 22-48a.krimma.krimm2022-11-30https://git.gsi.de/SDE/cxx-user-group/-/issues/37C++ committee meeting Kona '22 - trip report2022-11-24T06:39:40ZMatthias KretzC++ committee meeting Kona '22 - trip reportMeeting 22-47Matthias KretzMatthias Kretzhttps://git.gsi.de/SDE/cxx-user-group/-/issues/36Data analysis with ROOT RDataFrame: what I like and what I would like2022-11-17T08:20:48ZMatthias KretzData analysis with ROOT RDataFrame: what I like and what I would likeMeeting 22-45m.alfonsim.alfonsihttps://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/33Open Common-Middleware – OpenCMW2022-07-10T09:51:20ZMatthias KretzOpen Common-Middleware – OpenCMWMeeting 22-24Ralph J. SteinhagenRalph J. Steinhagenhttps://git.gsi.de/SDE/cxx-user-group/-/issues/20Static Analysis Part II: custom `clang-tidy` checks2022-05-18T15:37:12ZDennis Kleind.klein@gsi.deStatic Analysis Part II: custom `clang-tidy` checks* AST
* clang's `libTooling` API
* Invoke compiler
* Check anatomy: Matcher, Diagnostic, Fixit
* Example walkthrough* AST
* clang's `libTooling` API
* Invoke compiler
* Check anatomy: Matcher, Diagnostic, Fixit
* Example walkthroughMeeting 22-20Dennis Kleind.klein@gsi.deDennis Kleind.klein@gsi.dehttps://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/12argument-dependent lookup (ADL) and hidden friends2022-04-06T22:10:42ZMatthias Kretzargument-dependent lookup (ADL) and hidden friendsMeeting 22-14Matthias KretzMatthias Kretzhttps://git.gsi.de/SDE/cxx-user-group/-/issues/30distributed real-time programming & event-sourcing pattern2022-03-29T18:41:57ZMatthias Kretzdistributed real-time programming & event-sourcing patternMeeting 22-10Ralph J. SteinhagenRalph J. Steinhagenhttps://git.gsi.de/SDE/cxx-user-group/-/issues/31Buildsystems Demystified2022-03-29T18:39:59ZChristian TackeBuildsystems DemystifiedIn #23 we looked at modern CMake.
Sometimes it feels like (meta) build systems / generators like CMake do a lot of magic and you need to study five years of rocket science to know what these things really do.
This live demo tries to sh...In #23 we looked at modern CMake.
Sometimes it feels like (meta) build systems / generators like CMake do a lot of magic and you need to study five years of rocket science to know what these things really do.
This live demo tries to show the most important ingrediensts of C++ projects being built using CMake from the ground up:
* Call the compiler manually
* Automate using script
* Automate using simple Makefile
* Add some bells and whistles
* Add dependencies
* automate dependency tracking
* Be mostly happy!
* Rewrite using CMakeMeeting 22-12Christian TackeChristian Tackehttps://git.gsi.de/SDE/cxx-user-group/-/issues/23Modern CMake2022-03-21T14:30:10ZDennis Kleind.klein@gsi.deModern CMakeMeeting 21-44Dennis Kleind.klein@gsi.deDennis Kleind.klein@gsi.dehttps://git.gsi.de/SDE/cxx-user-group/-/issues/29my work: simd research, libstdc++ and GCC development, C++ committee2022-02-09T15:59:10ZMatthias Kretzmy work: simd research, libstdc++ and GCC development, C++ committeeMeeting 22-06Matthias KretzMatthias Kretzhttps://git.gsi.de/SDE/cxx-user-group/-/issues/19Static Analysis Part I: `clang-tidy` and `clangd`2022-01-26T16:17:32ZDennis Kleind.klein@gsi.deStatic Analysis Part I: `clang-tidy` and `clangd`* Usage
* Integration with CMake
* Integration with IDE (LSP)
* How does it work?
* Examples* Usage
* Integration with CMake
* Integration with IDE (LSP)
* How does it work?
* ExamplesMeeting 22-04Dennis Kleind.klein@gsi.deDennis Kleind.klein@gsi.dehttps://git.gsi.de/SDE/cxx-user-group/-/issues/27an overview of literals2022-01-12T19:52:25ZMatthias Kretzan overview of literals* character literals
* string literals
* integer literals (decimal, octal, hexadecimal or binary)
* floating-point literals (float, double, or long double)
* digit separators
* boolean literals
* nullptr
* user-defined literals* character literals
* string literals
* integer literals (decimal, octal, hexadecimal or binary)
* floating-point literals (float, double, or long double)
* digit separators
* boolean literals
* nullptr
* user-defined literalsMeeting 22-02Matthias KretzMatthias Kretzhttps://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. Steinhagen