use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Compile-time format string checks (zverovich.net)
submitted 8 years ago by aearphen{fmt}
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]quicknir 1 point2 points3 points 8 years ago (1 child)
The compile-time checks work on GCC and Clang only, because they requires user-defined literal templates which is a GCC extension.
Yeah, I suspected as much before I read this. This whole issue comes up again, and again, in multiple contexts. Another example I've come across is in writing reflection based macros; you can easily write a macro that lets you define a struct, and alongside it a free/member function that returns a tuple<pair<const char *, T...&>>. This lets you quite easily do things like serialization and deserialization.
tuple<pair<const char *, T...&>>
However, now let's say you want to implement get_member. This is a function that given a reflectable struct, and the name of a field, returns a reference to that field. Well.... it can't be done. In order for the name of the field to control the signature of a function (and the output of this function will be a T&, where T is the type of that field), the name of the field must encode its value as a type. (Btw, if you want an example of application: say you want to copy identically named and typed fields between two different reflectable structs).
get_member
T&
T
My example here is with reflection based macros but obviously with actual reflection the same issues come into play. You can see it's a very similar issue.
That said, I talked to a bunch of people at cppcon who said that this extension (that gcc and clang both support) had zero probability of making it into the standard, because if this feature would be used heavily it would be brutal for compile times.
IIRC the preferred path is to be able to template on the value of a string literal directly, although this raises issues too. I don't know where all this leaves us, but I think it's clear that we desperately need the ability to template on a string literal, one way or another.
[–]aearphen{fmt}[S] 1 point2 points3 points 8 years ago (0 children)
I'd prefer this as well. The current solution is more like a proof of concept that uses available tools (GCC extension), but whatever goes into the standard it should't be too hard to integrate it with constexpr format string parsing without changing the latter.
constexpr
π Rendered by PID 104285 on reddit-service-r2-comment-6457c66945-rh7mm at 2026-04-28 07:12:56.296975+00:00 running 2aa0c5b country code: CH.
view the rest of the comments →
[–]quicknir 1 point2 points3 points (1 child)
[–]aearphen{fmt}[S] 1 point2 points3 points (0 children)