-
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
Why does CMake configuration RelWithDebInfo by default adds "/Ob1" instead of "/Ob2"?
I'm posting questions that I have been curious about almost since I first ever used CMake. In short, RelWithDebInfo disables inlining of any function that isn't declared inline. The whole reason (at least for me) of having debug info in the release build is because that allows me to debug the machine code that is mostly same (if not exactly same) as the pure release build. Sure, inlining makes debugging a lot more fun (/s), but what really is the point of debugging a half-optimized code? I would normally either just debug the code with the optimization fully turned off, or the fully optimized code. (What counts as "fully" might be debatable, but I think that's not the point here.) I admit there are situations where I would want to debug half-optimized code (and I ran into such situations several times before), but (1) those cases are pretty rare I think, and (2) even for such cases, I would rather just locally disable optimizations by other means than to disable inlining globally. So I feel like RelWithDebInfo in its current form is almost 100% useless.
Rant aside, I found that this exact complaint seems to have repeated many times in various places, yet is not addressed so far. So I'd like to know:
- Does anyone really use RelWithDebInfo even with awareness of this pitfall? If so, is it because of its ease of debugging (compared to the fully optimized code), or is it simply because you could bare the inferior performance of RelWithDebInfo and didn't want to bother?
- What is/was the rationale behind this design choice?
- Is it recognized as an oversight these days (by the CMake developers themselves), or not?
- If so, then what's the reason for keeping it as it is? Is it simply the backward-compatibility? If so, then why not just add another default config?
https://redd.it/1nh2xx3
@r_cpp
In Defense of C++
https://dayvster.com/blog/in-defense-of-cpp/
https://redd.it/1ngssjn
@r_cpp
non compatibility of msvc with ninja??
hey, so im working on a project, my setup is msvc for compiler and vs code for coding (with clangd and cmake extensions). the problem is intellisense, msvc by default generates sln and vcxproj files which are useless (as far as ik) for intellisense in vs code. then i used ninja for generating compile_command.json and it was working perfectly until i changed c++ version to 23 and used its features like `std::expected` and `std::optional`, the compile_command.json file does not contain anything for expected and optional so intellisense doesn't work (but the code gets compiled without any errors) but then i was advised to change compiler to clang for c and clang++ for cpp and generate compile_command.json, now the code doesnt compile but i do get the compile_command.json, then i change back to msvc and use the clang compile_command.json. but the problem here is intellisense picks up files from mingw folder and sometimes the definitions are different or wrong all together. is there anything that can be done?
{
"directory": "redacted/build-x8664-windows",
"command": "redacted\\toolchain\\VC\\Tools\\MSVC\\14.44.35207\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -Iredacted\\lib -Iredacted\\vendor\\imgui -Iredacted\\vendor\\imgui\\backends -Iredacted\\vendor\\cppcoro\\include /DWIN32 /DWINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 -std:c++latest /std:c++latest /permissive- /Zc:cplusplus /FoCMakeFiles\\t1.dir\\test\\t1.cpp.obj /FdCMakeFiles\\t1.dir\\ /FS -c redacted\\test\\t1.cpp",
"file": "redacted\\test\\t1.cpp",
"output": "CMakeFiles\\t1.dir\\test\\t1.cpp.obj"
}
{
"directory": "redacted/build-x8664-windows",
"command": "redacted\\toolchain\\VC\\Tools\\MSVC\\14.44.35207\\bin\\Hostx64\\x64\\cl.exe /nologo /TP -Iredacted\\lib -Iredacted\\vendor\\imgui -Iredacted\\vendor\\imgui\\backends -Iredacted\\vendor\\cppcoro\\include /DWIN32 /DWINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1 -std:c++latest /std:c++latest /permissive- /Zc:cplusplus /FoCMakeFiles\\t1.dir\\test\\t1.cpp.obj /FdCMakeFiles\\t1.dir\\ /FS -c redacted\\test\\t1.cpp",
"file": "redacted\\test\\t1.cpp",
"output": "CMakeFiles\\t1.dir\\test\\t1.cpp.obj"
}
this is a part of compile_command.json generated by msvc
{
"directory": "redacted/build-x8664-windows",
"command": "redacted\\clang++.exe -Iredacted/vendor/imgui -Iredacted/vendor/imgui/backends -std=gnu++23 -o CMakeFiles\\libimgui.dir\\vendor\\imgui\\imguidraw.cpp.obj -c redacted\\vendor\\imgui\\imguidraw.cpp",
"file": "redacted\\vendor\\imgui\\imguidraw.cpp",
"output": "CMakeFiles\\libimgui.dir\\vendor\\imgui\\imguidraw.cpp.obj"
}
{
"directory": "redacted/build-x8664-windows",
"command": "redacted\\clang++.exe -Iredacted/vendor/imgui -Iredacted/vendor/imgui/backends -std=gnu++23 -o CMakeFiles\\libimgui.dir\\vendor\\imgui\\imguidraw.cpp.obj -c redacted\\vendor\\imgui\\imguidraw.cpp",
"file": "redacted\\vendor\\imgui\\imguidraw.cpp",
"output": "CMakeFiles\\libimgui.dir\\vendor\\imgui\\imguidraw.cpp.obj"
}
this is a part of compile_command.json generated by clang
https://redd.it/1ngnjuq
@r_cpp
Seeking experiences: Best C++ project starter among four popular templates?
I’m choosing a C++ project template and want real-user feedback on these: friendlyanon/cmake-init, TheLartians/ModernCppStarter, filipdutescu/modern-cpp-template, cginternals/cmake-init. Please share quick pros/cons, cross-platform experience, CMake quality, CI/tooling, and whether you’d use it for production. Thanks!
https://redd.it/1nghsy7
@r_cpp
Why can't std::apply figure out which overload I intend to use? Only one of then will work!
https://devblogs.microsoft.com/oldnewthing/20250911-00/?p=111586
https://redd.it/1nfqbv6
@r_cpp
I want something like Python's uv for c++
uv for Python is a package and project manager. It provides a single tool to replace multiple others like pip, venv, pip-tools, pyenv and other stuff. Using uv is straightforward:
uv run myscript.py
And you're done. Uv takes care of the dependencies (specified as a comment at the beginning of the py file), the environment, even the Python version you need. It's really a no-bullshit approach to Python development.
I dream of something like that for C++. No more drama with cmake, compiler versions not being available on my OS, missing dependencies, the quest for libstdc++/glibc being to old on Linux that I never fully understood...
I'm a simple man, let me dream big 😭
https://redd.it/1nf1lga
@r_cpp
Pattern matching for modern C++
Hey guys! I wrote a header-only lib provides pattern matching support for C++. Anyone interested?
Link here:
https://github.com/sentomk/patternia
https://redd.it/1nez4v1
@r_cpp
simdjson Version 4.0.0 Released
https://github.com/simdjson/simdjson/releases/tag/v4.0.0
https://redd.it/1netob0
@r_cpp
Another month, another WG21 ISO C++ Mailing
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/#mailing2025-09
https://redd.it/1neg2js
@r_cpp
C++ Memory Management • Patrice Roy & Kevin Carpenter
https://youtu.be/ehuYrQvFcFg
https://redd.it/1necrl7
@r_cpp
Store complex structures into a binary file
Hello! I have these hypothetical structures:
typedef struct character{
unsigned int id;
std::array<char, 256> name;
std::vector<int> factions_id;
std::vector<skill> skills;
} character;
typedef struct skill{
std::array<char, 256> name;
float cooldown;
} skill;
How do I store a character into a binary file? I tried to convert the character to bytes and store it directly but researching I found out that vector does not "have" the raw data.
Thank you for your time!
https://redd.it/1nea1nd
@r_cpp
Modern C++23 Makefile for new projects
This is a modern makefile that I came up with for new projects that use the latest standard, with very very strict warnings to make sure your code is in good shape.
Just wanted to share because people keep saying that C++ is unsafe and that's BS, you just need to get your warnings right.
CXX := g++
WARNINGS := \
-Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wshadow \
-Wdouble-promotion -Wformat=2 -Wundef -Wcast-qual -Wcast-align=strict \
-Wnon-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Wnull-dereference \
-Wunused -Wuninitialized -Winit-self -Wswitch-enum -Wredundant-decls \
-Wsuggest-override -Wimplicit-fallthrough=5 -Walloca -Werror
DEBUG_FLAGS := -O0 -g3 -fsanitize=address,undefined -fno-omit-frame-pointer
RELEASE_FLAGS := -O3 -march=native -DNDEBUG -flto
SRC_DIR := src
BUILD_DIR := build
BIN_DIR := bin
TARGET := myprogram
SRC := $(wildcard $(SRC_DIR)/*.cpp)
OBJ := $(SRC:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/$(MODE)/%.o)
all: release
debug: MODE := debug
debug: CXXFLAGS = $(DEBUG_FLAGS) $(WARNINGS) -std=c++23
debug: dirs $(BIN_DIR)/$(TARGET)
release: MODE := release
release: CXXFLAGS = $(RELEASE_FLAGS) $(WARNINGS) -std=c++23
release: dirs $(BIN_DIR)/$(TARGET)
$(BIN_DIR)/$(TARGET): $(OBJ)
$(CXX) $(CXXFLAGS) $^ -o $@
$(BUILD_DIR)/$(MODE)/%.o: $(SRC_DIR)/%.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
dirs:
@mkdir -p $(BUILD_DIR)/debug $(BUILD_DIR)/release $(BIN_DIR)
clean:
rm -rf $(BUILD_DIR) $(BIN_DIR)
.PHONY: all debug release clean dirs
https://redd.it/1ne4fu5
@r_cpp
Pointers and References as Parameters and Arguments in Functions
Hey guys, I was working on a project for a class of mine, and I wanted to make sure that I could properly explain myself. This is for Computer Science 2, so I don't need it to be overly technical. I was working with a function that required one of the arguments to be a pointer, but it worked when I was passing a variable with the address-of operator (&). This seems kind of odd to me without some sort of explanation of datatype decay/conversion or something because a pointer holds an address, but isn't *exactly* an address. Could I get some explanations?
https://redd.it/1ndlz7n
@r_cpp
Sourcetrail (Fork) 2025.9.9 released
Hi everybody,
Sourcetrail 2025.9.9, a fork of the C++/Java source explorer, has been released with these changes:
C/C++: Add indexing of `auto` return types
GUI: Allow tab closing with middle mouse click
GUI: Improve layout of license window content
GUI: Add Open to context menu of start window
https://redd.it/1nd9o10
@r_cpp
I feel that I lack the logical thinking ability needed for programming. What should I do?
https://redd.it/1nd6bkn
@r_cpp
My attempt at learning OpenGL by building a fractal explorer
Hey everyone,
I've been working on a personal project called FractaVista to get more comfortable with modern C++ and learn OpenGL compute shaders. It's a fractal explorer that uses the GPU for real-time rendering, built with C++17, OpenGL, SDL3, and Dear ImGui.
It's definitely still a work in progress, but the code is up on GitHub if you're curious to see how it works or try building it. Any feedback or suggestions would be super appreciated, and a star on the repo if you like the project would mean a lot! ⭐
GitHub Repo: https://github.com/Krish2882005/FractaVista
Thanks for checking it out!
https://redd.it/1ngxfvn
@r_cpp
Resources for learning about the C++ memory model and memory ordering in general
Hi. I’ve watched Herb Sutter’s Atomic Weapons lectures, read C++ Concurrency in Action, and gone through a few blog posts, but I still don’t feel I fully understand concepts like sequential consistency and memory ordering. Are there any other resources that explain these topics more clearly?
https://redd.it/1ngqs6m
@r_cpp
Safe C++ proposal is not being continued
https://sibellavia.lol/posts/2025/09/safe-c-proposal-is-not-being-continued/
https://redd.it/1ngjemb
@r_cpp
cppreference missing filter by standard?
There used to be a very useful feature on cppreference where you could specify a standard version and the API would be filtered to represent the state at exactly that standard. No more (constexpr since C++20) or (until C++17) etc etc. Is this gone or am I just missing something? It was a very useful feature to filter out unhelpful info about other standards when I'm focused on exactly one.
https://redd.it/1nfywfj
@r_cpp
manual clang prebuilt install
So I needed to install a specific version of clang llvm on my debian system. https://releases.llvm.org/download.html#7.0.1
but I had no idea what to actually do... So I tried some things.
first I installed them as the usual /usr/include lib bin etc but that wasn't right so I installed it to /usr/lib/clang/VER/ but for some reason it doesnt look in /usr/lib/clang/VER/include/c++/v1/
like I have no idea I hate this... so I copied everything there into /usr/include, then I heard that I somehow didn't have the glibc headers (apt doesnt work btw) and I extracted the include from the glibc source code into /usr/include but still doesnt workkkkkkk
In file included from <stdin>:1:
In file included from /usr/include/vector:269:
In file included from /usr/include/iosfwd:90:
/usr/include/wchar.h:2:11: fatal error: 'wcsmbs/wchar.h' file not found
\# include <wcsmbs/wchar.h>
\^\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~
1 error generated.
https://redd.it/1nf4abc
@r_cpp
is Clion good?
hi, just wanted to ask if Clion from jetbrains is anygood as an ide and if you would suggest any others.
im completely new to C++ and wanted to ask which IDEs people tend to use ( I am not new to programming and usually code in Python and C # , and i use the JetBrains IDEs for those since I get them for free as a student)
https://redd.it/1nezaoh
@r_cpp
cppstat - C++ Compiler Support Status
https://cppstat.dev/
https://redd.it/1nexqz9
@r_cpp
Guide: C++ Instrumentation with Memory Sanitizer
https://systemsandco.dev/2025/07/31/msan.html
https://redd.it/1nej0nj
@r_cpp
Learncpp.com fixed
https://s4qc.github.io/blogs/LearnCppFixed/
https://redd.it/1ne7iwy
@r_cpp
Parallel C++ for Scientific Applications: Development Environment
https://www.youtube.com/watch?v=ORU5G2u2BuE
https://redd.it/1ne9bb4
@r_cpp
Here is a minimalist tickle for your fancy ...
... stripped from an old project (hope I got formatting right).
# -*- mode: Makefile; -*-
OSNAME := $(shell uname)
WARNFLAGS =
CXXFLAGS = -g -O -std=c++23 $(WARNFLAGS)
CPPFLAGS = -I. -I..
LDFLAGS =
LIBS =
DEPENDDIR = ./.deps
DEPENDFLAGS = -M
SRCS := $(wildcard *.cc)
OBJS := $(patsubst %.cc,%.o,$(SRCS))
TARGETS = someprog
all: $(TARGETS)
DEPS = $(patsubst %.o,$(DEPENDDIR)/%.d,$(OBJS))
-include $(DEPS)
$(DEPENDDIR)/%.d: %.cc $(DEPENDDIR)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(DEPENDFLAGS) $< >$@
$(DEPENDDIR):
@[ ! -d $(DEPENDDIR) ] && mkdir -p $(DEPENDDIR)
%: $(OBJS)
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
%.o: $(SRCS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
%: %.cc
.PHONY: clean
clean:
rm -rf $(OBJS) $(TARGETS) $(DEPENDDIR)
https://redd.it/1ne847u
@r_cpp
Good Library for a 2D RPG game?
I want to start learning how to make an actual game with the windows and stuff with C++. What libraries do I need to make it on VS Code?
Also, I have made a fairly simple game before on Java, if there is anything similar to it.
https://redd.it/1ne26g3
@r_cpp
C++ Language Updates in MSVC Build Tools v14.50
https://devblogs.microsoft.com/cppblog/c-language-updates-in-msvc-build-tools-v14-50/
https://redd.it/1ndfmvk
@r_cpp
C++ Day 2025: Agenda & Free Tickets
Hi all!
The agenda for C++ Day 2025 is now live (all talks will be in English), and (free) tickets are available!
When & where: October 25, in Pavia (northern Italy)
What: a half-day of C++ talks + networking
Organized by the Italian C++ Community together with SEA Vision (our host & main sponsor). Two more sponsors are already confirmed, with others in the pipeline.
Check out the agenda & grab your ticket: http://italiancpp.org/cppday25
See you there!
Marco
https://redd.it/1nd7y1f
@r_cpp
announced their schedule for ADC 2025 which you can find at [https://conference.audio.dev/schedule/adc25/](https://conference.audio.dev/schedule/adc25/)
* **ACCU on Sea Registration Is Now Open** – You can buy super early bird tickets at [https://accuconference.org/booking](https://accuconference.org/booking) with discounts available for ACCU members.
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://homeofficemedia.blog.gov.uk/electronic-travel-authorisation-eta-factsheet-january-2025/)
https://redd.it/1nclmuz
@r_cpp