Really strange C++20 module symbol visibility/reachability issue (MSVC ICE)
Suppose you have a small C++ module with a simple struct like this:
module;
#include <string>
export module mymodule;
export struct mystruct
{
static constexpr auto message = std::string{"aaa"};
std::string member{};
};
You then import the module and refer to my_struct in user code:
import mymodule;
int main(int argc, char ** argv)
{
auto x = mystruct{};
}
In MSVC this straight up results in internal compiler error. You will not get any other error messages (if you comment out
Even though I had found ways to circumvent this error, I never really understood what was the root cause of this error. For instance you can change
Today I was reading recently purchased book called C++20 The Complete Guide (ISBN: 978-3-96730-920-1) and noticed it had chapter on modules. In 16.1.4 it discussed module symbol reachability vs. visibility. It got me thinking... could this error be because user code doesn't know what
#include <string> // fixes internal compiler/linker errors
import mymodule;
int main(int argc char ** argv)
{
auto x = mystruct{};
}
This error is not limited to just
https://redd.it/1bryeod
@r_cpp
Suppose you have a small C++ module with a simple struct like this:
module;
#include <string>
export module mymodule;
export struct mystruct
{
static constexpr auto message = std::string{"aaa"};
std::string member{};
};
You then import the module and refer to my_struct in user code:
import mymodule;
int main(int argc, char ** argv)
{
auto x = mystruct{};
}
In MSVC this straight up results in internal compiler error. You will not get any other error messages (if you comment out
static constexpr line you will get link time error "LINK : fatal error LNK1000: Internal error during LIB::Search")Even though I had found ways to circumvent this error, I never really understood what was the root cause of this error. For instance you can change
static constexpr to static inline const and it will compile just fine. Or you can remove the std::string member and everything will compile just fine. That's really strange.Today I was reading recently purchased book called C++20 The Complete Guide (ISBN: 978-3-96730-920-1) and noticed it had chapter on modules. In 16.1.4 it discussed module symbol reachability vs. visibility. It got me thinking... could this error be because user code doesn't know what
std::string is? Sure enough including <string> in user code fixes the error:#include <string> // fixes internal compiler/linker errors
import mymodule;
int main(int argc char ** argv)
{
auto x = mystruct{};
}
This error is not limited to just
std::string. In this example you can replace std::string with any std class that has constexpr constructor for instance std::array will ICE too. Is this a bug? Is this a feature? I have not tested this on any other compiler other than MSVC (latest and latest preview).https://redd.it/1bryeod
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Why is Cpp sin slower than JS?
https://stackoverflow.com/questions/77989813/why-is-sin-slower-in-webassembly-than-in-java-script/78128153
https://redd.it/1bs9ew8
@r_cpp
https://stackoverflow.com/questions/77989813/why-is-sin-slower-in-webassembly-than-in-java-script/78128153
https://redd.it/1bs9ew8
@r_cpp
Stack Overflow
Why is sin slower in webassembly than in java script?
I have some very simple benchmark that is run via Catch2, and compiled with -O3 using emscripten 3.1.37:
BENCHMARK("cpp sin only")
{
double sum = 1.0;
for (int t =...
BENCHMARK("cpp sin only")
{
double sum = 1.0;
for (int t =...
std::map makes it impossible to use a memory pool. But why?
I have written a very fast and efficient memory pool allocator and I can't use it. On MSVC,
Additionally, the allocator interface is a mess. I couldn't get my allocator to work correctly even after using a
I ended up writing my own binary tree class.
Why can't the standard types like
I couldn't even find a memory pool with the correct allocator interface on Google. Probably because of rebinding, which is what I struggled with.
https://redd.it/1bsf00i
@r_cpp
I have written a very fast and efficient memory pool allocator and I can't use it. On MSVC,
std::map allocates some kind of header type and a node type, and it's impossible to know which one is which, so I'll end up allocating 1000000 headers when I only need a single one.Additionally, the allocator interface is a mess. I couldn't get my allocator to work correctly even after using a
shared_ptr for the memory. It got freed before the map was destructed, resulting in a crash.I ended up writing my own binary tree class.
Why can't the standard types like
map, set, list, and queue have a simple way to use a memory pool? I mean, it's a language that is intended for writing high-performance code (among other things).I couldn't even find a memory pool with the correct allocator interface on Google. Probably because of rebinding, which is what I struggled with.
https://redd.it/1bsf00i
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Just curious on the uses of C++
Hi!, I'm a high school student, and I want to learn c++. However, I'm just curious, what uses cases are there for c++ practically. For example, many websites say web development, but just leave it at that. Is c++ really good backend database interactions?, does it have libraries for building full blown windows applications. It would be awesome if people could share!
https://redd.it/1bseixt
@r_cpp
Hi!, I'm a high school student, and I want to learn c++. However, I'm just curious, what uses cases are there for c++ practically. For example, many websites say web development, but just leave it at that. Is c++ really good backend database interactions?, does it have libraries for building full blown windows applications. It would be awesome if people could share!
https://redd.it/1bseixt
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
I have been using C++ for a long time now, and I don't know how to write an allocator, and I don't see any relevant use-case.
I would gladly read a in-depth article on common, relevant use-case where an allocator would be useful for a beginner. I understand common STL containers, but not allocators.
It seems like allocators are very important and a very large subject, yet I have never used them, which I don't understand how it's possible... although it can be explained easily since I often prefer to used YAGNI or KISS principles, so I don't dive into very specific complex use-cases.
For example, I would see potential relevant use-case:
a simple vector/pool
a vector where I can remove items randomly, except I replace the deleted item with the last item instead of moving the memory segment on the right of the deleted item: I don't even know if that's a potential case for an allocator, or if this pattern has a name.
Are allocators's usefulness exaggerated seen from YAGNI/KISS point of view? Or am I just a poor, uninterested C++ developer?
https://redd.it/1bsi2mj
@r_cpp
I would gladly read a in-depth article on common, relevant use-case where an allocator would be useful for a beginner. I understand common STL containers, but not allocators.
It seems like allocators are very important and a very large subject, yet I have never used them, which I don't understand how it's possible... although it can be explained easily since I often prefer to used YAGNI or KISS principles, so I don't dive into very specific complex use-cases.
For example, I would see potential relevant use-case:
a simple vector/pool
a vector where I can remove items randomly, except I replace the deleted item with the last item instead of moving the memory segment on the right of the deleted item: I don't even know if that's a potential case for an allocator, or if this pattern has a name.
Are allocators's usefulness exaggerated seen from YAGNI/KISS point of view? Or am I just a poor, uninterested C++ developer?
https://redd.it/1bsi2mj
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Do you tend to install your development dependencies globally?
I've always generally tried to avoid it. I like to use CMake's externalProject_Add or fetchContent to install a project's dependencies into a local directory. In the past I've used Docker or Vagrant to set up development environments.
But now I'm looking into Conan, and when I try to fetch GLEW it wants to use apt to install a whole bunch of -dev packages globally. I feel uneasy about this, but can't really justify it. I'm not sure what it does on other platforms, like Windows, which doesn't have a system installer; I've only tried it on Linux so far.
https://redd.it/1bsifvk
@r_cpp
I've always generally tried to avoid it. I like to use CMake's externalProject_Add or fetchContent to install a project's dependencies into a local directory. In the past I've used Docker or Vagrant to set up development environments.
But now I'm looking into Conan, and when I try to fetch GLEW it wants to use apt to install a whole bunch of -dev packages globally. I feel uneasy about this, but can't really justify it. I'm not sure what it does on other platforms, like Windows, which doesn't have a system installer; I've only tried it on Linux so far.
https://redd.it/1bsifvk
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
How Microsoft delivers Office using C++
https://www.youtube.com/watch?v=0QtX-nMlz0Q
https://redd.it/1bskzr2
@r_cpp
https://www.youtube.com/watch?v=0QtX-nMlz0Q
https://redd.it/1bskzr2
@r_cpp
YouTube
How Microsoft Uses C++ to Deliver Office - Huge Size, Small Components - Zachary Henkel CppCon 2022
https://cppcon.org/
---
How Microsoft Uses C++ to Deliver Office - Huge Size, Small Components - Zachary Henkel - CppCon 2022
https://github.com/CppCon/CppCon2022
More on Engineering Microsoft Office using C++:
CppCon 2014: Zaika Antoun "Microsoft w/ C++…
---
How Microsoft Uses C++ to Deliver Office - Huge Size, Small Components - Zachary Henkel - CppCon 2022
https://github.com/CppCon/CppCon2022
More on Engineering Microsoft Office using C++:
CppCon 2014: Zaika Antoun "Microsoft w/ C++…
Why left-shift 64bits is limited to 63bits?
I'm creating a toy programming language, and I'm implementing the left-shift operator. The integers in this language are 64bits.
As I'm implementing this, it makes sense to me that left-shifting by 0 performs no shifting. Conversely, it also makes sense to me that left-shifting by 64 would introduce 64 zeros on the right, and thus turn the integer into 0. Yet, the max shift value for a 64bit int is 63; otherwise, the operation is undefined.
What is the possible rationale to limit shifting to less than bit-size, as opposed to equal bit-size?
In other words, I expected a type of symmetry:
>0 shift: no change
>
>max shift: turn to 0
​
https://redd.it/1bsr7jj
@r_cpp
I'm creating a toy programming language, and I'm implementing the left-shift operator. The integers in this language are 64bits.
As I'm implementing this, it makes sense to me that left-shifting by 0 performs no shifting. Conversely, it also makes sense to me that left-shifting by 64 would introduce 64 zeros on the right, and thus turn the integer into 0. Yet, the max shift value for a 64bit int is 63; otherwise, the operation is undefined.
What is the possible rationale to limit shifting to less than bit-size, as opposed to equal bit-size?
In other words, I expected a type of symmetry:
>0 shift: no change
>
>max shift: turn to 0
​
https://redd.it/1bsr7jj
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
What type of people go to and what type of person gets the most out of going to CppCon?
https://redd.it/1bsr2vy
@r_cpp
https://redd.it/1bsr2vy
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Polymorphic Memory Resources - Worth Using?
https://open.substack.com/pub/lucisqr/p/polymorphic-memory-resources-worth?r=1ecjkz&utm_campaign=post&utm_medium=web&showWelcomeOnShare=true
https://redd.it/1bssm75
@r_cpp
https://open.substack.com/pub/lucisqr/p/polymorphic-memory-resources-worth?r=1ecjkz&utm_campaign=post&utm_medium=web&showWelcomeOnShare=true
https://redd.it/1bssm75
@r_cpp
Substack
Polymorphic Memory Resources - Worth Using?
In the previous article, we saw how the STL containers behave when carrying small payloads. We then sought to find out how they behave when we replace the default malloc with PMR allocators instead.
C++ Show and Tell - April 2024
Use this thread to share anything you've written in C++. This includes:
* a tool you've written
* a game you've been working on
* your first non-trivial C++ program
The rules of this thread are very straight forward:
* The project must involve C++ in some way.
* It must be something you (alone or with others) have done.
* Please share a link, if applicable.
* Please post images, if applicable.
If you're working on a C++ library, you can also share new releases or major updates in a dedicated post as before. The line we're drawing is between "written in C++" and "useful for C++ programmers specifically". If you're writing a C++ library or tool for C++ developers, that's something C++ programmers can use and is on-topic for a main submission. It's different if you're just using C++ to implement a generic program that isn't specifically about C++: you're free to share it here, but it wouldn't quite fit as a standalone post.
Last month's thread: https://www.reddit.com/r/cpp/comments/1b3pj0g/c_show_and_tell_march_2024/
https://redd.it/1bsxuxt
@r_cpp
Use this thread to share anything you've written in C++. This includes:
* a tool you've written
* a game you've been working on
* your first non-trivial C++ program
The rules of this thread are very straight forward:
* The project must involve C++ in some way.
* It must be something you (alone or with others) have done.
* Please share a link, if applicable.
* Please post images, if applicable.
If you're working on a C++ library, you can also share new releases or major updates in a dedicated post as before. The line we're drawing is between "written in C++" and "useful for C++ programmers specifically". If you're writing a C++ library or tool for C++ developers, that's something C++ programmers can use and is on-topic for a main submission. It's different if you're just using C++ to implement a generic program that isn't specifically about C++: you're free to share it here, but it wouldn't quite fit as a standalone post.
Last month's thread: https://www.reddit.com/r/cpp/comments/1b3pj0g/c_show_and_tell_march_2024/
https://redd.it/1bsxuxt
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Try real dark theme on Compiler Explorer ;) (More -> Settings -> Site theme -> Real Dark)
https://redd.it/1bsyeuw
@r_cpp
https://redd.it/1bsyeuw
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Is VS Code good for C++
I’m learning C++ and I wonder if VS Code is a good editor for C++
https://redd.it/1bsy9k8
@r_cpp
I’m learning C++ and I wonder if VS Code is a good editor for C++
https://redd.it/1bsy9k8
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Linked List
Hello guys, I am trying to implement Linked List using C++. I need help on a part.
LinkedList.h
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include "Node.h"
namespace LinkedList
{
template <class T>
class LinkedList
{
public:
LinkedList() : m_head(nullptr), m_len(0){};
LinkedList(T p_value) : m_head(std::make_shared<Node<T>>(p_value)), m_len(1){};
size_t Length() { return m_len; };
virtual void PushFront(T p_value) = 0;
protected:
std::shared_ptr<Node<T>> m_head;
size_t m_len;
};
}
#endif
Single.h
#ifndef SINGLYLIST_H
#define SINGLYLIST_H
#include "LinkedList.h"
namespace LinkedList
{
template <class T>
class SinglyLinkedList : public LinkedList<T>
{
public:
using LinkedList<T>::LinkedList;
void PushFront(T p_value);
};
}
#endif
Single.cpp
#include "Single.h"
#include <iostream>
template <class T>
void LinkedList::SinglyLinkedList<T>::PushFront(T p_value)
{
std::cout << p_value << std::endl;
}
When I run this code in main.cpp
#include "Single.h"
int main(void)
{
LinkedList::SinglyLinkedList<int> list = {10};
list.PushFront(20);
return 0;
}
I get this error:
Undefined symbols for architecture arm64:
"LinkedList::SinglyLinkedList<int>::PushFront(int)", referenced from:
_main in main.cpp.o
vtable for LinkedList::SinglyLinkedList<int> in main.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [linkedlist] Error 1
make[1]: *** [CMakeFiles/linkedlist.dir/all] Error 2
make: *** [all] Error 2
https://redd.it/1bt0xxa
@r_cpp
Hello guys, I am trying to implement Linked List using C++. I need help on a part.
LinkedList.h
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include "Node.h"
namespace LinkedList
{
template <class T>
class LinkedList
{
public:
LinkedList() : m_head(nullptr), m_len(0){};
LinkedList(T p_value) : m_head(std::make_shared<Node<T>>(p_value)), m_len(1){};
size_t Length() { return m_len; };
virtual void PushFront(T p_value) = 0;
protected:
std::shared_ptr<Node<T>> m_head;
size_t m_len;
};
}
#endif
Single.h
#ifndef SINGLYLIST_H
#define SINGLYLIST_H
#include "LinkedList.h"
namespace LinkedList
{
template <class T>
class SinglyLinkedList : public LinkedList<T>
{
public:
using LinkedList<T>::LinkedList;
void PushFront(T p_value);
};
}
#endif
Single.cpp
#include "Single.h"
#include <iostream>
template <class T>
void LinkedList::SinglyLinkedList<T>::PushFront(T p_value)
{
std::cout << p_value << std::endl;
}
When I run this code in main.cpp
#include "Single.h"
int main(void)
{
LinkedList::SinglyLinkedList<int> list = {10};
list.PushFront(20);
return 0;
}
I get this error:
Undefined symbols for architecture arm64:
"LinkedList::SinglyLinkedList<int>::PushFront(int)", referenced from:
_main in main.cpp.o
vtable for LinkedList::SinglyLinkedList<int> in main.cpp.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [linkedlist] Error 1
make[1]: *** [CMakeFiles/linkedlist.dir/all] Error 2
make: *** [all] Error 2
https://redd.it/1bt0xxa
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Mathematical special functions in libc++
Since C++17 the standard contains special math functions (e.g. associated Laguerre polynomials).
To this day they are not supported with libc++.
See this godbolt which succeeds for libstdc++ but fails with libc++.
One should also note that this is even the last C++17 library feature missing any implementation for Clang libc++.
I found the following discussions regarding this issue
- https://reviews.llvm.org/D58876:
Implementing
- https://reviews.llvm.org/D59937:
Implementing
- https://reviews.llvm.org/D142806:
Pulling in all of Boost.Math to implement the special math functions.
- docs.google.com (see section "Agenda for 31-10-2023")
Discussion about current status and possibility of adding dependency on Boost.Math.
- https://github.com/llvm/llvm-project/issues/72055: Recent github discussion linking all previous pages.
In multiple comments it is mentioned that the libc++ community does not have the resources to review the above linked merge requests.
Thus, custom implementations are probably not going to make it into trunk (and would be a waste of time)?
Would it be of help if I review the merge requests?
Does libc++ accept reviews from externals (me not being part of a review board)?
Do you have other ideas of how I could be of help here?
Do you know where and to whom I should talk to?
As a note aside:
I have an extensive mathematical background and have rolled out custom implementations for some of these functions.
https://redd.it/1bt1lne
@r_cpp
Since C++17 the standard contains special math functions (e.g. associated Laguerre polynomials).
To this day they are not supported with libc++.
See this godbolt which succeeds for libstdc++ but fails with libc++.
One should also note that this is even the last C++17 library feature missing any implementation for Clang libc++.
I found the following discussions regarding this issue
- https://reviews.llvm.org/D58876:
Implementing
std::assoc_laguerre, std::assoc_legendre, std::hermite, std::laguerre, and std::legendre, but without a review since March 2019.- https://reviews.llvm.org/D59937:
Implementing
std::expint, but without a review since March 2019.- https://reviews.llvm.org/D142806:
Pulling in all of Boost.Math to implement the special math functions.
- docs.google.com (see section "Agenda for 31-10-2023")
Discussion about current status and possibility of adding dependency on Boost.Math.
- https://github.com/llvm/llvm-project/issues/72055: Recent github discussion linking all previous pages.
In multiple comments it is mentioned that the libc++ community does not have the resources to review the above linked merge requests.
Thus, custom implementations are probably not going to make it into trunk (and would be a waste of time)?
Would it be of help if I review the merge requests?
Does libc++ accept reviews from externals (me not being part of a review board)?
Do you have other ideas of how I could be of help here?
Do you know where and to whom I should talk to?
As a note aside:
I have an extensive mathematical background and have rolled out custom implementations for some of these functions.
https://redd.it/1bt1lne
@r_cpp
How to define binary data structures across compilers and architectures?
I’ve mostly been working in the embedded world in the past years but also have a lot of experience with python and C in the OS environment. There have been times where I logged some data to the PC from an embedded device over UART so either a binary data structure wasn’t needed or easy to implement with explicitly defined array offsets.
Im know starting a project with reasonably fast data rates from a Zynq over the gigabit Ethernet. I want to send arbitrary messages over the link to be process by either a C++ or Python based application on a PC.
Does anyone know of an elegant way / tool to define binary data structures across languages, compilers and architectures? Sure we could us C structs but there are issues on implementation there. This could be solved through attributes etc. tho.
https://redd.it/1bt1ngz
@r_cpp
I’ve mostly been working in the embedded world in the past years but also have a lot of experience with python and C in the OS environment. There have been times where I logged some data to the PC from an embedded device over UART so either a binary data structure wasn’t needed or easy to implement with explicitly defined array offsets.
Im know starting a project with reasonably fast data rates from a Zynq over the gigabit Ethernet. I want to send arbitrary messages over the link to be process by either a C++ or Python based application on a PC.
Does anyone know of an elegant way / tool to define binary data structures across languages, compilers and architectures? Sure we could us C structs but there are issues on implementation there. This could be solved through attributes etc. tho.
https://redd.it/1bt1ngz
@r_cpp
Reddit
From the cpp community on Reddit
Explore this post and more from the cpp community
Leveraging the Power of Transparent Comparators in C++
https://johnfarrier.com/transparent-comparators-in-c23/
https://redd.it/1bt1wlk
@r_cpp
https://johnfarrier.com/transparent-comparators-in-c23/
https://redd.it/1bt1wlk
@r_cpp
John Farrier
Leveraging the Power of Transparent Comparators in C++
Discover the power of transparent comparators in C++. Enhance the flexibility of associative containers with transparent comparators!
Random distributions are not one-size-fits-all (part 2)
https://codingnest.com/random-distributions-are-not-one-size-fits-all-part-2/
https://redd.it/1bt52zp
@r_cpp
https://codingnest.com/random-distributions-are-not-one-size-fits-all-part-2/
https://redd.it/1bt52zp
@r_cpp
The Coding Nest
Random distributions are not one-size-fits-all (part 2)
In this part, we will look at different algorithms for generating uniformly distributed random numbers and determine whether they fit specific use cases better than Lemire's algorithm.
C++ Videos Released Last Month - March 2024 (Updated to Include Videos Released 03/25/2024 - 03/31/2024)
This month the following C++ videos have been published to YouTube. A new post will be made each week as more videos are released
CppCon
03/25/2024 - 03/31/2024
Plenary: Coping With Other People's C++ Code - Laura Savino - [https://youtu.be/qyz6sOVON68](https://youtu.be/qyz6sOVON68)
Behavioral Modeling in HW/SW Co-design Using C++ Coroutines - Jeffrey Erickson & Sebastian Schoenberg - https://youtu.be/KmLunUoBcQk
Writing Python Bindings for C++ Libraries: Easy-to-use Performance - Saksham Sharma - [https://youtu.be/rB7c69Z5Kus](https://youtu.be/rB7c69Z5Kus)
Building Effective Embedded Systems in C++: Architectural Best Practices - Gili Kamma - https://youtu.be/xv7jf2jQezI
Abstraction Patterns for Cross Platform Development Using C++ - Al-Afiq Yeong - [https://youtu.be/Et0ofYRi3fw](https://youtu.be/Et0ofYRi3fw)
03/18/2024 - 03/24/2024
Getting Started with C++ - Michael Price - https://youtu.be/NReDubvNjRg
Better Code: Exploring Validity in C++ - David Sankel - [https://youtu.be/wxzQXj6WW2E](https://youtu.be/wxzQXj6WW2E)
Better Code: Contracts in C++ - Sean Parent & Dave Abrahams - https://youtu.be/OWsepDEh5lQ
Back to Basics: Forwarding References - How to Forward Parameters in Modern C++ - Mateusz Pusz - [https://youtu.be/0GXnfi9RAlU](https://youtu.be/0GXnfi9RAlU)
Tips on Surveying the C++ Community - Anastasia Kazakova - https://youtu.be/54LiB\_OxPHE
03/11/2024 - 03/17/2024
C++ Memory Model: from C++11 to C++23 - Alex Dathskovsky - [https://youtu.be/SVEYNEWZLo4](https://youtu.be/SVEYNEWZLo4)
Building Consensus on a Set of Rules for Our Massive C++ Codebase - Sherry Sontag - https://youtu.be/-Bth3PFsrsw
Designing Fast and Efficient List-like Data Structures - Yannic Bonenberger - [https://youtu.be/stfEry0zz5E](https://youtu.be/stfEry0zz5E)
Iteration Revisited: A Safer Iteration Model for Cpp - Tristan Brindle - https://youtu.be/nDyjCMnTu7o
C++ in the Developing World: Why it Matters - Mathew Benson - [https://youtu.be/dHxzADxQv48](https://youtu.be/dHxzADxQv48)
03/04/2024 - 03/10/2024
An Introduction to Tracy Profiler in C++ - Marcos Slomp - https://youtu.be/ghXk3Bk5F2U
Safety and Security for C++: Panel Discussion - Hosted by Michael Wong - [https://youtu.be/R10pXWHpPn4](https://youtu.be/R10pXWHpPn4)
Optimizing Away C++ Virtual Functions May Be Pointless - Shachar Shemesh - https://youtu.be/i5MAXAxp\_Tw
Building Bridges: Leveraging C++ and ROS for Simulators, Sensor Data and Algorithms - [https://youtu.be/w6-FCWJrZko](https://youtu.be/w6-FCWJrZko)
Khronos APIs for Heterogeneous Compute and Safety: SYCL and SYCL SC - Michael Wong, Nevin Liber & Verena Beckham - https://youtu.be/JHiBeuRqVkY
02/26/2024 - 03/03/2024
Leveraging the Power of C++ for Efficient Machine Learning on Embedded Devices - Adrian Stanciu - [https://youtu.be/5j05RWh1ypk](https://youtu.be/5j05RWh1ypk)
C++ Regular, Revisited - Victor Ciura - https://youtu.be/PFI\_rpboj8U
Evolution of a Median Algorithm in C++ - Pete Isensee - [https://youtu.be/izxuLq\_HZHA](https://youtu.be/izxuLq_HZHA)
Back to Basics: The Rule of Five in C++ - Andre Kostur - https://youtu.be/juAZDfsaMvY
C++23: An Overview of Almost All New and Updated Features - Marc Gregoire - [https://youtu.be/Cttb8vMuq-Y](https://youtu.be/Cttb8vMuq-Y)
All of these talks can also be accessed at [https://cppcon.programmingarchive.com](https://cppcon.programmingarchive.com) where you can also find information on how to get early access to the rest of the CppCon 2023 videos and lightning talks.
Audio Developer Conference
03/25/2024 - 03/31/2024
This month the following C++ videos have been published to YouTube. A new post will be made each week as more videos are released
CppCon
03/25/2024 - 03/31/2024
Plenary: Coping With Other People's C++ Code - Laura Savino - [https://youtu.be/qyz6sOVON68](https://youtu.be/qyz6sOVON68)
Behavioral Modeling in HW/SW Co-design Using C++ Coroutines - Jeffrey Erickson & Sebastian Schoenberg - https://youtu.be/KmLunUoBcQk
Writing Python Bindings for C++ Libraries: Easy-to-use Performance - Saksham Sharma - [https://youtu.be/rB7c69Z5Kus](https://youtu.be/rB7c69Z5Kus)
Building Effective Embedded Systems in C++: Architectural Best Practices - Gili Kamma - https://youtu.be/xv7jf2jQezI
Abstraction Patterns for Cross Platform Development Using C++ - Al-Afiq Yeong - [https://youtu.be/Et0ofYRi3fw](https://youtu.be/Et0ofYRi3fw)
03/18/2024 - 03/24/2024
Getting Started with C++ - Michael Price - https://youtu.be/NReDubvNjRg
Better Code: Exploring Validity in C++ - David Sankel - [https://youtu.be/wxzQXj6WW2E](https://youtu.be/wxzQXj6WW2E)
Better Code: Contracts in C++ - Sean Parent & Dave Abrahams - https://youtu.be/OWsepDEh5lQ
Back to Basics: Forwarding References - How to Forward Parameters in Modern C++ - Mateusz Pusz - [https://youtu.be/0GXnfi9RAlU](https://youtu.be/0GXnfi9RAlU)
Tips on Surveying the C++ Community - Anastasia Kazakova - https://youtu.be/54LiB\_OxPHE
03/11/2024 - 03/17/2024
C++ Memory Model: from C++11 to C++23 - Alex Dathskovsky - [https://youtu.be/SVEYNEWZLo4](https://youtu.be/SVEYNEWZLo4)
Building Consensus on a Set of Rules for Our Massive C++ Codebase - Sherry Sontag - https://youtu.be/-Bth3PFsrsw
Designing Fast and Efficient List-like Data Structures - Yannic Bonenberger - [https://youtu.be/stfEry0zz5E](https://youtu.be/stfEry0zz5E)
Iteration Revisited: A Safer Iteration Model for Cpp - Tristan Brindle - https://youtu.be/nDyjCMnTu7o
C++ in the Developing World: Why it Matters - Mathew Benson - [https://youtu.be/dHxzADxQv48](https://youtu.be/dHxzADxQv48)
03/04/2024 - 03/10/2024
An Introduction to Tracy Profiler in C++ - Marcos Slomp - https://youtu.be/ghXk3Bk5F2U
Safety and Security for C++: Panel Discussion - Hosted by Michael Wong - [https://youtu.be/R10pXWHpPn4](https://youtu.be/R10pXWHpPn4)
Optimizing Away C++ Virtual Functions May Be Pointless - Shachar Shemesh - https://youtu.be/i5MAXAxp\_Tw
Building Bridges: Leveraging C++ and ROS for Simulators, Sensor Data and Algorithms - [https://youtu.be/w6-FCWJrZko](https://youtu.be/w6-FCWJrZko)
Khronos APIs for Heterogeneous Compute and Safety: SYCL and SYCL SC - Michael Wong, Nevin Liber & Verena Beckham - https://youtu.be/JHiBeuRqVkY
02/26/2024 - 03/03/2024
Leveraging the Power of C++ for Efficient Machine Learning on Embedded Devices - Adrian Stanciu - [https://youtu.be/5j05RWh1ypk](https://youtu.be/5j05RWh1ypk)
C++ Regular, Revisited - Victor Ciura - https://youtu.be/PFI\_rpboj8U
Evolution of a Median Algorithm in C++ - Pete Isensee - [https://youtu.be/izxuLq\_HZHA](https://youtu.be/izxuLq_HZHA)
Back to Basics: The Rule of Five in C++ - Andre Kostur - https://youtu.be/juAZDfsaMvY
C++23: An Overview of Almost All New and Updated Features - Marc Gregoire - [https://youtu.be/Cttb8vMuq-Y](https://youtu.be/Cttb8vMuq-Y)
All of these talks can also be accessed at [https://cppcon.programmingarchive.com](https://cppcon.programmingarchive.com) where you can also find information on how to get early access to the rest of the CppCon 2023 videos and lightning talks.
Audio Developer Conference
03/25/2024 - 03/31/2024
YouTube
Plenary: Coping With Other People's C++ Code - Laura Savino - CppCon 2023
https://cppcon.org/
CppCon 2023 Early Access: https://cppcon.org/early-access
Access All 2023 Session Videos Ahead of Their Official Release To YouTube. At least 30 days exclusive access through the Early Access system. Videos will be released to the CppCon…
CppCon 2023 Early Access: https://cppcon.org/early-access
Access All 2023 Session Videos Ahead of Their Official Release To YouTube. At least 30 days exclusive access through the Early Access system. Videos will be released to the CppCon…