Stay up-to-date with everything C++! Content directly fetched from the subreddit just for you. Join our group for discussions : @programminginc Powered by : @r_channels
Rate this compile command
start cmd /k "rd /s /q build && mkdir build && cmake -S . -B build -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON && move /Y build\\\\compile_commands.json . && rd /s /q build && mkdir build && move /Y compile_commands.json build && cmake -S . -B build -G "Visual Studio 17 2022" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON && cmake --build build --config Debug && build\\\\Debug\\\\main.exe & echo. & pause"
it's for running a 1 button build command on neovim. It uses clangd lsp server so it needs the compile_commands.json which can be made with ninja, but I don't have ninja configured to compile it correctly, so i have to save that file, then rebuild with visual studio 17 one then open the exe file
https://redd.it/1kgkxzb
@r_cpp
ArgParse: C++ CLI Argument Parser & Function Dispatcher
https://github.com/Polaris1000M/ArgParse
https://redd.it/1kgdpfd
@r_cpp
Latest News From Upcoming C++ Conferences (2025-05-06)
This Reddit post will now be a roundup of any new news from upcoming conferences with then the full list being available at https://programmingarchive.com/upcoming-conference-news/
Early Access To YouTube Videos
The following conferences are offering Early Access to their YouTube videos:
C++Online – You can now access the first batch of videos from C++Online 2025 by purchasing an early access pass for £25. Over the next couple of weeks, the remaining talks will be added and so you will have at least 30 day early access to each of the 25 talks and 7 lightning talks. Visit [https://cpponline.uk/registration](https://cpponline.uk/registration) to purchase
C++Now – For $150, you can now buy 30 days Early Access to the 50+ C++Now 2025 YouTube videos before they are publically released on YouTube. For more information visit https://cppnow.org/announcements/2025/04/cppnow-2025-early-video-access/
ACCU – All ACCU members will be eligible to get Early Access to the YouTube videos from the 2025 Conference. Find out more about the membership including how to join from £35 per year at [https://www.accu.org/menu-overviews/membership/](https://www.accu.org/menu-overviews/membership/)
Anyone who attended the ACCU 2025 Conference who is NOT already a member will be able to claim free digital membership.
Open Calls For Speakers
The following conference have open Call For Speakers:
CppCon (CLOSING SOON!) – Interested speakers have until May 11th to submit their talks with decisions expected to be sent out on June 22nd. Find out more including how to submit your proposal at [https://cppcon.org/cfs2025/](https://cppcon.org/cfs2025/)
C++ Under The Sea – Interested speakers have until June 15th to submit their talks. Find out more including how to submit your proposal at https://cppunderthesea.nl/call-for-speakers/
Meeting C++ – Interested speakers have until June 4th to submit their talks. Find out more including how to submit your proposal at [https://meetingcpp.com/meetingcpp/news/items/Submit-your-talks-to-Meeting-Cpp-2025-.html](https://meetingcpp.com/meetingcpp/news/items/Submit-your-talks-to-Meeting-Cpp-2025-.html)
The call for speakers for ADC 2025 should also open later this month.
Tickets Available To Purchase
The following conferences currently have tickets available to purchase
ADC – You can now buy early bird tickets online or in-person tickets to ADC 2025 at https://audio.dev/tickets/. Early bird pricing for in-person tickets will end on September 15th.
C++ Under The Sea – You can now buy early bird tickets to C++ Under The Sea 2025 at [https://store.ticketing.cm.com/cppunderthesea2025/step/4f730cc9-df6a-4a7e-b9fe-f94cfdf8e0cc](https://store.ticketing.cm.com/cppunderthesea2025/step/4f730cc9-df6a-4a7e-b9fe-f94cfdf8e0cc)
C++ on Sea – Tickets for both the main conference and the post-conference workshops can be purchased at https://cpponsea.uk/tickets
CppNorth – Regular ticket can be purchased now [here](https://store.cppnorth.ca/checkouts/cn/Z2NwLWV1cm9wZS13ZXN0MTowMUpBRkpGNzVOV1FNSERUSzBBNlFCUFBITg?channel=buy_button&discount=EARLIEST_BIRD)
Other News
Join the ADC Mentorship Programme – Sign-ups are now open until June 1st to join the ADC Mentorship Programme as either a mentor or a mentee. Find out more including how to sign up at https://audio.dev/mentorship/
CppNorth 2025 Speakers Now Announced – You can view the full lineup of speakers and sessions at [https://cppnorth.ca/speakers.html](https://cppnorth.ca/speakers.html)
Pure Virtual C++ 2025 VOD now available – If you missed Pure Virtual C++ 2025, you can watch the event as it happened on YouTube –
I'm trying to find a C++ debugger
Hey so I know this might be a little information to go off of and I'm not even sure if this is the correct subreddit. However I've driven myself crazy trying to find this debugger any help would be greatly appreciated.
So all I remember about is it that it was open source, on github, and I found it looking for a free alternative to RemedyBG. It looks like it uses Dear ImGui for gui. As far as I remember it has pretty much the same feature set as remedy and it was cross platform. Sadly that's all I should've starred but I guess I forgot.
https://redd.it/1kg3t8p
@r_cpp
Understanding Concurrency in Python
Coding doesn’t always have to be serious! Cowsay brings lighthearted fun to developers, turning plain text into ASCII-generated speech bubbles. Originally written in Perl, it has since been ported to Python, JavaScript, Ruby, and more. Wherever there’s a command-line interface, Cowsay is ready to bring humor to your coding sessions!
https://redd.it/1kg1z88
@r_cpp
My first "real" C++ Project: Decided to teach myself C++ by writing a STL-like custom data structure
https://github.com/schiffinor/attendanceServer/blob/8b32e6ed538ff15234d5748ba70ee9beebe6541f/DoublyLinkedCircularHashMap.hpp
https://redd.it/1kfz0m1
@r_cpp
Implementing a Struct of Arrays
https://brevzin.github.io/c++/2025/05/02/soa/
https://redd.it/1kfio4w
@r_cpp
New C++ Conference Videos Released This Month - May 2025
**CppCon**
* Lightning Talk: Saturday Is Coming Faster - Convert year\_month\_day to Weekday Faster - Cassio Neri
* Part 1 - [https://youtu.be/64mTEXnSnZs](https://youtu.be/64mTEXnSnZs)
* Part 2 - [https://youtu.be/bnVkWEjRNeI](https://youtu.be/bnVkWEjRNeI)
* Lightning Talk: Customizing Compilation Error Messages Using C++ Concepts - Patrick Roberts - [https://youtu.be/VluTsanWuq0](https://youtu.be/VluTsanWuq0)
* Lightning Talk: How Far Should You Indent Your Code? The Number Of The Counting - Dave Steffen - [https://youtu.be/gybQtWGvupM](https://youtu.be/gybQtWGvupM)
* Chplx - Bridging Chapel and C++ for Enhanced Asynchronous Many-Task Programming - Shreyas Atre - [https://youtu.be/aOKqyt00xd8](https://youtu.be/aOKqyt00xd8)
**ADC**
* Workshop: GPU-Powered Neural Audio - High-Performance Inference for Real-Time Sound Processing - Alexander Talashov & Alexander Prokopchuk - ADC 2024 - [https://youtu.be/EEKaKVqJiQ8](https://youtu.be/EEKaKVqJiQ8)
* scipy.cpp - Using AI to Port Python's scipy.signal Filter-Related Functions to C++ for Use in Real Time - Julius Smith - [https://youtu.be/hnYuZOm0mLE](https://youtu.be/hnYuZOm0mLE)
* SRC - Sample Rate Converters in Digital Audio Processing - Theory and Practice - Christian Gilli & Michele Mirabella - [https://youtu.be/0ED32\_gSWPI](https://youtu.be/0ED32_gSWPI)
**Pure Virtual C++**
* Getting Started with C++ in Visual Studio - [https://www.youtube.com/watch?v=W9VxRRtC\_-U](https://www.youtube.com/watch?v=W9VxRRtC_-U)
* Getting Started with Debugging C++ in Visual Studio - [https://www.youtube.com/watch?v=cdUd4e7i5-I](https://www.youtube.com/watch?v=cdUd4e7i5-I)
You can also watch a stream of the Pure Virtual C++ event here [https://www.youtube.com/watch?v=H8nGW3GY868](https://www.youtube.com/watch?v=H8nGW3GY868)
**C++ Under The Sea**
* CONOR HOEKSTRA - Arrays, Fusion, CPU vs GPU - [https://www.youtube.com/watch?v=q5FmkSEDA2M](https://www.youtube.com/watch?v=q5FmkSEDA2M)
**Using std::cpp**
* Keynote: The Real Problem of C++ - Klaus Iglberger - [https://www.youtube.com/watch?v=vN0U4P4qmRY](https://www.youtube.com/watch?v=vN0U4P4qmRY)
https://redd.it/1kfem6h
@r_cpp
Sourcetrail 2025.5.1 released
Hi everybody,
[Sourcetrail 2025.5.1](https://github.com/petermost/Sourcetrail/releases/tag/2025.5.1), a C++/Java source explorer, has been released with updates to the GUI:
* Fix handling of Esc/Return keys for dialogs (Indexing, Bookmark, etc.)
* Activate bookmark with double click and close bookmark manager
* Highlight the taskbar entry when indexing has finished
* Show indexing progress in window title
* Added tooltips or prompt texts to many widgets
https://redd.it/1kf7aks
@r_cpp
I'm about to start Learning C++
I'm about to start learning C++, should I learn Assembly and C first for better command at C++?
https://redd.it/1keu11v
@r_cpp
+2913,7 @@ static void* vma_aligned_alloc(size_t alignment, size_t size)
#include <AvailabilityMacros.h>
#endif
-static void* vma_aligned_alloc(size_t alignment, size_t size)
+inline void* vma_aligned_alloc(size_t alignment, size_t size)
{
// Unfortunately, aligned_alloc causes VMA to crash due to it returning null pointers. (At least under 11.4)
Also, GCC 15 still doesn't support private module fragment, so I enclosed `module :private;` line with `#ifndef __GNUC__ ... #endif`.
And I retried...
FAILED: CMakeFiles/vku.dir/interface/mod.cppm.o CMakeFiles/vku.dir/vku.gcm
/home/gk/gcc-15/bin/g++ -isystem /home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include -isystem /home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/share/unofficial-vulkan-memory-allocator-hpp/../../include -std=gnu++23 -MD -MT CMakeFiles/vku.dir/interface/mod.cppm.o -MF CMakeFiles/vku.dir/interface/mod.cppm.o.d -fmodules-ts -fmodule-mapper=CMakeFiles/vku.dir/interface/mod.cppm.o.modmap -MD -fdeps-format=p1689r5 -x c++ -o CMakeFiles/vku.dir/interface/mod.cppm.o -c /home/gk/Downloads/vku/interface/mod.cppm
In module imported at /home/gk/Downloads/vku/interface/debugging.cppm:11:1,
of module vku:debugging, imported at /home/gk/Downloads/vku/interface/mod.cppm:7:
vku:details.to_string: error: interface partition is not exported
In module imported at /home/gk/Downloads/vku/interface/descriptors/PoolSizes.cppm:12:1,
of module vku:descriptors.PoolSizes, imported at /home/gk/Downloads/vku/interface/descriptors/mod.cppm:9,
of module vku:descriptors, imported at /home/gk/Downloads/vku/interface/mod.cppm:8:
vku:details.concepts: error: interface partition is not exported
In module imported at /home/gk/Downloads/vku/interface/descriptors/DescriptorSetLayout.cppm:16:1,
of module vku:descriptors.DescriptorSetLayout, imported at /home/gk/Downloads/vku/interface/descriptors/mod.cppm:7,
of module vku:descriptors, imported at /home/gk/Downloads/vku/interface/mod.cppm:8:
vku:details.functional: error: interface partition is not exported
In module imported at /home/gk/Downloads/vku/interface/commands.cppm:14:1,
of module vku:commands, imported at /home/gk/Downloads/vku/interface/mod.cppm:10:
vku:details.container.OnDemandCounterStorage: error: interface partition is not exported
In module imported at /home/gk/Downloads/vku/interface/commands.cppm:15:1,
of module vku:commands, imported at /home/gk/Downloads/vku/interface/mod.cppm:10:
vku:details.tuple: error: interface partition is not exported
In module imported at /home/gk/Downloads/vku/interface/rendering/AttachmentGroup.cppm:15:1,
of module vku:rendering.AttachmentGroup, imported at /home/gk/Downloads/vku/interface/rendering/mod.cppm:8,
of module vku:rendering, imported at /home/gk/Downloads/vku/interface/mod.cppm:14:
vku:rendering.AttachmentGroupBase: error: interface partition is not exported
/home/gk/Downloads/vku/interface/mod.cppm:4: confused by earlier errors, bailing out
ninja: build stopped: subcommand failed.
I wrote the `detail::` namespace code into the separate module partitions, and they were only imported to the module partitions and not exported. But GCC requires them to be exported if an exported module partition is importing them.
diff --git a/interface/mod.cppm b/interface/mod.cppm
index 1148398..695d987 100644
--- a/interface/mod.cppm
+++ b/interface/mod.cppm
@@ -13,3 +13,13 @@ export import :pipelines;
export import :queue;
export import :rendering;
export import :utils;
+
+#ifdef __GNUC__
+// GCC requires all interface partitions to be exported.
+export import :details.to_string;
+export import :details.concepts;
+export import :details.functional;
+export import :details.container.OnDemandCounterStorage;
+export import :details.tuple;
+export import :rendering.AttachmentGroupBase;
+#endif
So I exported them... and retried again...
gk@fedora:~/Downloads/vku$ cmake
My journey to GCC 15 and module
>C++ Modules have been greatly improved.
After seeing this in the GCC 15 release note, I have been wondering supporting GCC for my module based project's compilation, which is only support Clang and MSVC for now. So I built GCC from source in my Linux machine, and attempted to use it.
gk@fedora:~/Downloads/vku$ cmake --build build
[5/18] Building CXX object CMakeFiles/vku.dir/extlibs/module-ports/vk_mem_alloc.cppm.o
FAILED: CMakeFiles/vku.dir/extlibs/module-ports/vk_mem_alloc.cppm.o CMakeFiles/vku.dir/vk_mem_alloc_hpp.gcm
/home/gk/gcc-15/bin/g++ -isystem /home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include -isystem /home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/share/unofficial-vulkan-memory-allocator-hpp/../../include -std=gnu++23 -MD -MT CMakeFiles/vku.dir/extlibs/module-ports/vk_mem_alloc.cppm.o -MF CMakeFiles/vku.dir/extlibs/module-ports/vk_mem_alloc.cppm.o.d -fmodules-ts -fmodule-mapper=CMakeFiles/vku.dir/extlibs/module-ports/vk_mem_alloc.cppm.o.modmap -MD -fdeps-format=p1689r5 -x c++ -o CMakeFiles/vku.dir/extlibs/module-ports/vk_mem_alloc.cppm.o -c /home/gk/Downloads/vku/extlibs/module-ports/vk_mem_alloc.cppm
/home/gk/Downloads/vku/extlibs/module-ports/vk_mem_alloc.cppm:68:1: sorry, unimplemented: private module fragment
68 | module : private;
| ^~~~~~
In file included from /home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vulkan-memory-allocator-hpp/vk_mem_alloc.hpp:5,
from /home/gk/Downloads/vku/extlibs/module-ports/vk_mem_alloc.cppm:3:
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() [with T = char; AllocatorT = VmaStlAllocator<char>]’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(m_Allocator.m_pCallbacks, m_pArray); }
| ^
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() [with T = VmaDefragmentationMove; AllocatorT = VmaStlAllocator<VmaDefragmentationMove>]’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(m_Allocator.m_pCallbacks, m_pArray); }
| ^
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() [with T = VmaJsonWriter::StackItem; AllocatorT = VmaStlAllocator<VmaJsonWriter::StackItem>]’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(m_Allocator.m_pCallbacks, m_pArray); }
| ^
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() [with T = VmaPoolAllocator<VmaAllocation_T>::ItemBlock; AllocatorT = VmaStlAllocator<VmaPoolAllocator<VmaAllocation_T>::ItemBlock>]’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() {
My journey to GCC 15 and module
>C++ Modules have been greatly improved.
After seeing this in the GCC 15 release note, I have been wondering supporting GCC for my module based project's compilation, which is only support Clang and MSVC for now. So I built GCC from source in my Linux machine, and attempted to use it.
gk@fedora:~/Downloads/vku$ cmake --build build
5/18 Building CXX object CMakeFiles/vku.dir/extlibs/module-ports/vkmemalloc.cppm.o
FAILED: CMakeFiles/vku.dir/extlibs/module-ports/vkmemalloc.cppm.o CMakeFiles/vku.dir/vkmemallochpp.gcm
/home/gk/gcc-15/bin/g++ -isystem /home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include -isystem /home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/share/unofficial-vulkan-memory-allocator-hpp/../../include -std=gnu++23 -MD -MT CMakeFiles/vku.dir/extlibs/module-ports/vkmemalloc.cppm.o -MF CMakeFiles/vku.dir/extlibs/module-ports/vkmemalloc.cppm.o.d -fmodules-ts -fmodule-mapper=CMakeFiles/vku.dir/extlibs/module-ports/vkmemalloc.cppm.o.modmap -MD -fdeps-format=p1689r5 -x c++ -o CMakeFiles/vku.dir/extlibs/module-ports/vkmemalloc.cppm.o -c /home/gk/Downloads/vku/extlibs/module-ports/vkmemalloc.cppm
/home/gk/Downloads/vku/extlibs/module-ports/vkmemalloc.cppm:68:1: sorry, unimplemented: private module fragment
68 | module : private;
| ^~~~~~
In file included from /home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vulkan-memory-allocator-hpp/vkmemalloc.hpp:5,
from /home/gk/Downloads/vku/extlibs/module-ports/vkmemalloc.cppm:3:
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() [with T = char; AllocatorT = VmaStlAllocator<char>]’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(mAllocator.mpCallbacks, mpArray); }
| ^
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() with T = VmaDefragmentationMove; AllocatorT = VmaStlAllocator<VmaDefragmentationMove>’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks, void)’
4353 | ~VmaVector() { VmaFree(mAllocator.mpCallbacks, mpArray); }
| ^
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks, void)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks pAllocationCallbacks, void ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() [with T = VmaJsonWriter::StackItem; AllocatorT = VmaStlAllocator<VmaJsonWriter::StackItem>]’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(mAllocator.mpCallbacks, mpArray); }
| ^
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() with T = VmaPoolAllocator<VmaAllocation_T>::ItemBlock; AllocatorT = VmaStlAllocator<VmaPoolAllocator<VmaAllocation_T>::ItemBlock>’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks, void)’
4353 | ~VmaVector() {
CppCon 2025's submission deadline is May 11
Hey all, CppCon's call-for-submissions is open and the deadline isn't too far. Talks about anything-C++ are always welcome, and there's a lot of room for new ways to look into C++ and the ecosystem.
Also as a self-plug, I'm also the co-chair of the Tooling track at CppCon this year, so if you're building C++ tooling or have a unique perspective on things in the C++ tooling ecosystem, this would be an amazing place to present a talk, mingle, and discuss!
Feel free to reach out at tooling\_track@cppcon.org if you have any questions. I'll also try to reply here as much as I can.
https://redd.it/1keli74
@r_cpp
I don't understand if constexpr... why doesn't this compile
#include <atomic>
class Threading
{
public:
static constexpr int NumThreads = 1;
};
std::conditional_t<Threading::NumThreads == 1, int, std::atomic_int> var;
int main()
{
if constexpr (Threading::NumThreads == 1)
{
var += 10;
}
else
{
var.fetch_add(10); <---- errror here but shouldn't this get discarded?
}
return 0;
}
https://redd.it/1kec0vl
@r_cpp
C++ Language Updates in MSVC in Visual Studio 2022 17.14
https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-in-visual-studio-2022-17-14/
https://redd.it/1kget17
@r_cpp
https://www.youtube.com/watch?v=H8nGW3GY868
Finally anyone who is coming to a conference in the UK such as C++ on Sea or ADC from overseas may now be required to obtain Visas to attend. Find out more including how to get a VISA at https://homeofficemedia.blog.gov.uk/electronic-travel-authorisation-eta-factsheet-january-2025/
https://redd.it/1kgcn0s
@r_cpp
Automatic differentiation libraries for real-time embedded systems?
I’ve been searching for a good automatic differentiation library for real time embedded applications. It seems that every library I evaluate has some combinations of defects that make it impractical or undesirable.
* not supporting second derivatives (ceres)
* only computing one derivative per pass (not performant)
* runtime dynamic memory allocations
Furthermore, there seems to be very little information about performance between libraries, and what evaluations I’ve seen I deem not reliable, so I’m looking for community knowledge.
I’m utilizing Eigen and Ceres’s tiny_solver. I require small dense Jacobians and Hessians at double precision. My two Jacobians are approximately 3x1,000 and 10x300 dimensional, so I’m looking at forward mode. My Hessian is about 10x10. All of these need to be continually recomputed at low latency, but I don’t mind one-time costs.
(Why are reverse mode tapes seemingly never optimized for repeated use down the same code path with varying inputs? Is this just not something the authors imagined someone would need? I understand it isn’t a trivial thing to provide and less flexible.)
I don’t expect there to be much (or any) gain in explicit symbolic differentiation. The target functions are complicated and under development, so I’m realistically stuck with autodiff.
I need the (inverse) Hessian for the quadratic/ Laplace approximation after optimization, not for optimization itself, so I believe I can’t use BFGS. I would rather not use a separate library just for computing the Hessian, but will if necessary.
The most attractive option I’ve found so far is TinyAD, but it will require me to do some surgery to make it real time friendly, but my initial evaluation is that it won’t be too bad. Is there a better option for embedded applications?
As an aside, it seems like forward mode Jacobian is the perfect target for explicit SIMD vectorization, but I don’t see any libraries doing this, except perhaps some trying to leverage the restricted vectorization optimizations Eigen can do on dynamically sized data. What gives?
https://redd.it/1kg5jwo
@r_cpp
First C++ Project
I have been learning c++ like 8 months now, and i have this project that i am somewhat proud of, i don't think it is 100% done, but i would like to get assessment, i am 14 and looking forward to learning c++ as my main language, project link : https://github.com/Indective/TaskMasterpp
thanks !
https://redd.it/1kg2y3b
@r_cpp
Starting on seamless C++ interop in jank
https://jank-lang.org/blog/2025-05-02-starting-seamless-interop/
https://redd.it/1kfzf64
@r_cpp
C or C++ JSON search library
Hi, I have a growing number of JSON files and need to find specific values/fields. So, I'm starting to look for a library to search through them... "find all strings/number/arrays fields with X value/s" "find all keys with Y value"... etc. I'd like to return which filename the item/s were found within and the parent object and/or full object path to the item.
For a different use case, I found Simdjson and it is amazing. I will continue learning how to use it. It really shines for a different use case I have where I already know the path to the item I need to extract and I know which file to look within ahead of time.
But, for this additional use case, I will be searching all of my files and not know ahead of time which file the item is located within.
I guess I have other alternatives than just reading individual files off disk - import it all into Mongo or into Sqlite (and use their JSON support for searching). Maybe those are the best DB specific options? I was trying to avoid dumping all of these files into DB... The number of files will continue to grow over time as well.
I wasn't thinking of using a DB engine specifically for this project but maybe I should... There will be up to a few million files (possibly > 10m over time) that I need to search. Average file size will be in the 3-10k range and the object hierarchies will be "fairly" large / deeply nested in some cases.
Just thought I could a fairly simple, quick / dirty implementation with a library and see how far that would get me. But, just curious if anyone knows of a good library for this...
https://redd.it/1kflm0j
@r_cpp
Video: Creating a custom lexer with Scintilla and wxStyledTextCtrl
Utah C++ Programmers has released another video:
Syntax Enhanced Editing with Scintilla
This was one of my longer presentations. I prefer to keep them to at most an hour, but the Scintilla editing control had lots of functionality and there isn't much documentation on how to write your own custom lexer for it, so it took a bit of explaining.
https://redd.it/1kffvki
@r_cpp
need a simple imGUI browser
First of all, I don’t really know C++ and I’m not looking to learn it. I just need a very simple browser built with ImGui that can be injected into a process. If someone could share a Visual Studio project file for this, that would be great. Thanks.
https://redd.it/1kfa9m8
@r_cpp
Load-store conflicts
https://zeux.io/2025/05/03/load-store-conflicts/
https://redd.it/1kf3hbz
@r_cpp
--build build
[3/4] Building CXX object CMakeFiles/vku.dir/interface/mod.cppm.o
FAILED: CMakeFiles/vku.dir/interface/mod.cppm.o CMakeFiles/vku.dir/vku.gcm
/home/gk/gcc-15/bin/g++ -isystem /home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include -isystem /home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/share/unofficial-vulkan-memory-allocator-hpp/../../include -std=gnu++23 -MD -MT CMakeFiles/vku.dir/interface/mod.cppm.o -MF CMakeFiles/vku.dir/interface/mod.cppm.o.d -fmodules-ts -fmodule-mapper=CMakeFiles/vku.dir/interface/mod.cppm.o.modmap -MD -fdeps-format=p1689r5 -x c++ -o CMakeFiles/vku.dir/interface/mod.cppm.o -c /home/gk/Downloads/vku/interface/mod.cppm
/home/gk/Downloads/vku/interface/mod.cppm:4:8: internal compiler error: Segmentation fault
4 | export module vku;
| ^~~~~~
0x1f8f8bb internal_error(char const*, ...)
../../gcc/diagnostic-global-context.cc:517
0xfc0d5f crash_signal
../../gcc/toplev.cc:322
0x90a790 key_local_type
../../gcc/cp/module.cc:11009
0x90a790 key_mergeable
../../gcc/cp/module.cc:11510
0x90a790 decl_value
../../gcc/cp/module.cc:8287
0x90b1af depset::hash::find_dependencies(module_state*)
../../gcc/cp/module.cc:14819
0x90c08b module_state::write_begin(elf_out*, cpp_reader*, module_state_config&, unsigned int&)
../../gcc/cp/module.cc:19716
0x90d473 finish_module_processing(cpp_reader*)
../../gcc/cp/module.cc:22249
0x8abd23 c_parse_final_cleanups()
../../gcc/cp/decl2.cc:5792
0xa9703f c_common_parse_file()
../../gcc/c-family/c-opts.cc:1397
Please submit a full bug report, with preprocessed source (by using -freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
ninja: build stopped: subcommand failed.
My dream was shattered. So sad. I hope GCC 16 will be different...
https://redd.it/1kepvku
@r_cpp
VmaFree(m_Allocator.m_pCallbacks, m_pArray); }
| ^
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4318:8: error: ‘template<class T> T* VmaStlAllocator<T>::allocate(size_t)’ exposes TU-local entity ‘template<class T> T* VmaAllocateArray(const VkAllocationCallbacks*, size_t)’
4318 | T* allocate(size_t n) { return VmaAllocateArray<T>(m_pCallbacks, n); }
| ^~~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4071:11: note: ‘template<class T> T* VmaAllocateArray(const VkAllocationCallbacks*, size_t)’ declared with internal linkage
4071 | static T* VmaAllocateArray(const VkAllocationCallbacks* pAllocationCallbacks, size_t count)
| ^~~~~~~~~~~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4353:5: error: ‘template<class T, class AllocatorT> VmaVector<T, AllocatorT>::~VmaVector()’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(m_Allocator.m_pCallbacks, m_pArray); }
| ^
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4319:10: error: ‘template<class T> void VmaStlAllocator<T>::deallocate(T*, size_t)’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4319 | void deallocate(T* p, size_t n) { VmaFree(m_pCallbacks, p); }
| ^~~~~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() [with T = VmaDeviceMemoryBlock*; AllocatorT = VmaStlAllocator<VmaDeviceMemoryBlock*>]’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(m_Allocator.m_pCallbacks, m_pArray); }
| ^
/home/gk/Downloads/vku/build/vcpkg_installed/arm64-linux/include/vk_mem_alloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
ninja: build stopped: subcommand failed.
It first complains me about TU local entity error for `<vk_mem_alloc.h>` header file, which is included by [VulkanMemoryAllocator-Hpp](https://github.com/YaaZ/VulkanMemoryAllocator-Hpp/blob/master/src/vk_mem_alloc.cppm) module port file. It looks like GCC is strictly prohibiting exporting a function that is marked as `static`, so I changed the source codes like the below.
diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h
index 2307325..9dc121d 100644
--- a/include/vk_mem_alloc.h
+++ b/include/vk_mem_alloc.h
@@ -2896,7 +2896,7 @@ remove them if not needed.
#if defined(__ANDROID_API__) && (__ANDROID_API__ < 16)
#include <cstdlib>
-static void* vma_aligned_alloc(size_t alignment, size_t size)
+inline void* vma_aligned_alloc(size_t alignment, size_t size)
{
// alignment must be >= sizeof(void*)
if(alignment < sizeof(void*))
@@ -2913,7
VmaFree(mAllocator.mpCallbacks, mpArray); }
| ^
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks, void)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks pAllocationCallbacks, void ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4318:8: error: ‘template<class T> T* VmaStlAllocator<T>::allocate(sizet)’ exposes TU-local entity ‘template<class T> T VmaAllocateArray(const VkAllocationCallbacks, sizet)’
4318 | T* allocate(sizet n) { return VmaAllocateArray<T>(mpCallbacks, n); }
| ^~~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4071:11: note: ‘template<class T> T VmaAllocateArray(const VkAllocationCallbacks, sizet)’ declared with internal linkage
4071 | static T* VmaAllocateArray(const VkAllocationCallbacks* pAllocationCallbacks, sizet count)
| ^~~~~~~~~~~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4353:5: error: ‘template<class T, class AllocatorT> VmaVector<T, AllocatorT>::~VmaVector()’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks*, void*)’
4353 | ~VmaVector() { VmaFree(mAllocator.mpCallbacks, mpArray); }
| ^
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4319:10: error: ‘template<class T> void VmaStlAllocator<T>::deallocate(T, size_t)’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks, void)’
4319 | void deallocate(T p, sizet n) { VmaFree(mpCallbacks, p); }
| ^~~~~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks*, void*)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks* pAllocationCallbacks, void* ptr)
| ^~~~~~~
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4353:5: error: ‘VmaVector<T, AllocatorT>::~VmaVector() with T = VmaDeviceMemoryBlock*; AllocatorT = VmaStlAllocator<VmaDeviceMemoryBlock*>’ exposes TU-local entity ‘void VmaFree(const VkAllocationCallbacks, void)’
4353 | ~VmaVector() { VmaFree(mAllocator.mpCallbacks, mpArray); }
| ^
/home/gk/Downloads/vku/build/vcpkginstalled/arm64-linux/include/vkmemalloc.h:4051:13: note: ‘void VmaFree(const VkAllocationCallbacks, void)’ declared with internal linkage
4051 | static void VmaFree(const VkAllocationCallbacks pAllocationCallbacks, void ptr)
| ^~~~~~~
ninja: build stopped: subcommand failed.
It first complains me about TU local entity error for <vk_mem_alloc.h>
header file, which is included by VulkanMemoryAllocator-Hpp module port file. It looks like GCC is strictly prohibiting exporting a function that is marked as static
, so I changed the source codes like the below.
diff --git a/include/vkmemalloc.h b/include/vkmemalloc.h
index 2307325..9dc121d 100644
--- a/include/vkmemalloc.h
+++ b/include/vkmemalloc.h
@@ -2896,7 +2896,7 @@ remove them if not needed.
#if defined(ANDROIDAPI) && (ANDROIDAPI < 16)
#include <cstdlib>
-static void vma_aligned_alloc(size_t alignment, size_t size)
+inline void vmaalignedalloc(sizet alignment, sizet size)
{
// alignment must be >= sizeof(void)
if(alignment < sizeof(void))
@@ -2913,7
Planning to build a project but don't know where to start
I am actually planning to build a "Offline peer-to-peer chat application using cpp and UDP"
I am just starting out in the industry and I have dsa level cpp knowledge. I am fairly new to computer networks in practice as well.
I don't know where to start or what resources I should be referring to and I want to build this project within the next 8 months (can spend 2 hours a day on this).
Any advice, tips would be appreciated. Thank you.
https://redd.it/1keqfst
@r_cpp
what are some good c++ game engines which compile to webassembly?
if asked to choose which game engine would you choose for writing games which run on web through webasssembly , given that the whole game will be written in c++
https://redd.it/1kehaiz
@r_cpp
Using type aliasing to avoid the ODR problem with conditional compilation, part 2
https://devblogs.microsoft.com/oldnewthing/20250502-00/?p=111140
https://redd.it/1ke9r86
@r_cpp