-
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
DSA
I have a question, I use STL for normal development but in interviews do they want us to perform operations or algorithms without STL ?
I am not experienced with those, anyway, I would have to do it but should I prefer using STL in every situation or… could someone share there experience or enlighten me on this
https://redd.it/18u505o
@r_cpp
Quality of life small improvements for every day C++ coding.
I wonder what missing small (as opposed to the big ones) features you find in missing in C++ that would make your every day coding better.
My top 3 are:
Abbreviated lambdas. Single-statement lambdas often come with curly braces + return and ;. This, for things like ranges and functions with small lambdas, make code more difficult to read.
Some kind of left-to-right operator such as a rewrite operator|> that works syntactically (no overload hell) or UFCS. This would make code more discoverable in IDEs, would avoid boilerplate operator| that does not contribute in any meaningful ways to codebases and make free functions more generic. 3 aspects: less boiler-plate, more genericity and more discoverability. I think that having some kind of improvement here is a big win.
A `for...` loop that lets me expand tuple-like and variadic template objects. Recursion is more difficult than it should and you have fold expressions, but a loop still seems more natural to me.
range for loop dangling prevention (already fixed in C++23).
Recommended ranges talk btw, related to two of the bullet points: (https://youtu.be/vzpkhqeuqqq)
What small features you think you would benefit from the most for every day coding?
https://redd.it/18ucvsc
@r_cpp
Using C++ as a Scripting Language, part 10
https://medium.com/p/ad7dd7e4325d
https://redd.it/18v6emj
@r_cpp
The rise of metaprogramming in C++26
Before the year ends, which metaprogramming proposal or already-added features are you looking forward to for the C++26?
https://redd.it/18v5d8f
@r_cpp
O(1) space, O(N) time non-modifying median using ranges beats std::nth_element
https://deathandthepenguinblog.wordpress.com/2023/12/31/o1-space-on-time-non-modifying-median-using-ranges-beats-stdnth_element/
https://redd.it/18vfhk5
@r_cpp
Learn Modern C++
https://learnmoderncpp.com/
https://redd.it/18reejh
@r_cpp
static analysis of pre-conditions
Hello,
Is there any static analysis tool that allows to write some preconditions and verify them?
Something like :
//@pre: x >= 0, y>=0, x<w, y<h
void myfunc(int w, int h, char *data, int x, int y)
{
//code
}
and statically verify that these pre-conditions are respected at every call to myfunc.
Any format for annotating these preconditions would be ok, and I mostly need simple integer comparisons.
My main use case would be to do some boundary checking on functions that use OpenCV matrices (currently ignored by the static analysis tools I tried).
thanks
https://redd.it/18raty3
@r_cpp
What is the difference between using auto and explicit types?
I recently discovered the pointer to multidimensional array cast, for example:
int a10 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = 5;
int m = 2;
auto b = reinterpret_cast<int()nm>(&a);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
std::cout << bij << ' ';
}
std::cout << '\n';
}
My editor tells me that the deduced type for b is int (*)[m] but, when I try to use explicit types, Clang fails to compile with the following errors:
int (c)[m] = reinterpretcast<int(*)[n][m]>(&a);
// error: cannot initialize a variable of type 'int (*)[m]' with an lvalue of type 'int[n][m]'
decltype(b) d = *reinterpretcast<int()[n][m]>(&a);
// error: cannot initialize a variable of type 'decltype(b)' (aka 'int ()m') with an lvalue of type 'intnm'
int (e)[m] = (int()m)&a;
// error: cannot initialize a variable of type 'int ()[m]' with an rvalue of type 'int ()m'
What would be the reason for such behavior? Is there any difference between using auto and explicit types?
All these expressions work correctly using GCC, but I am trying to see if there is something that I misunderstood before concluding that this is a bug in Clang.
Demo: https://godbolt.org/z/YYT4Tn44W
https://redd.it/18s131a
@r_cpp
Xmake v2.8.6 released, New Packaging Plugin: XPack
https://github.com/xmake-io/xmake/wiki/Xmake-v2.8.6-released,-New-Packaging-Plugin:-XPack
https://redd.it/18r8n7t
@r_cpp
Will you switch to modules?
In some sense, you would not have a strong interest to modify and change legacy and fully working codebases. But for newer codebases, would you consider that modules are the right way to start?
​
https://redd.it/18rconj
@r_cpp
Can you imagine living without intellisense / lsp / autocomplete / buffer completions using c++?
There's been a couple times were i've edited c++ on a server using vanilla vim, it wasn't exactly awful but it was a really small project.
https://redd.it/18ri0qy
@r_cpp
I am interested in your opinions on this
https://www.reddit.com/r/rust/s/ba1SFOtYkm
https://redd.it/18qqjro
@r_cpp
C++: Efficient parallelization of small tasks
I tried to create a customized threadpool for small tasks and wanted feedback on this.
I posted details and my code for review on stackexchange: https://codereview.stackexchange.com/questions/288583/efficient-parallelization-of-small-tasks
My goal here is to share my learning and get feedback on further improvement or any possible bugs.
I have tried to describe problem and thinking process in more details in following linkedin article draft: https://www.linkedin.com/article/edit/7144600522392559616/
https://redd.it/18qhp2w
@r_cpp
Yet another C++ Testing Library
Hello everyone,
I've been working on a testing library called Guardian.
I know many production grade testing framework/libraries exists.
And it's just an attempt for understanding and learning how they work.
Give it a try: https://github.com/ks961/guardian and let me know how was it [ good, bad, worst \].
Those who wish to contribute are welcome to submit pull requests.
And if you have any suggestions to make it better, that would be greatly appreciated.
Thank you.
https://redd.it/18qg845
@r_cpp
C++ logging library - something I've been working on, Pt. 3
Hello everyone,
It's become sort of a tradition to make a post here, exactly on that day each year, with an "update" on the library that I've been working on:
1. (2020) https://www.reddit.com/r/cpp/comments/kj364n/c\_logging\_library\_something\_ive\_been\_working\_on/
2. (2021) https://www.reddit.com/r/cpp/comments/rnwq2g/c\_logging\_library\_something\_ive\_been\_working\_on/
3. (2022) No update
Unlike the previous years, as we grow older and wiser, I'm now aware that it's not going to be "finished" any time soon. However, I can present it to you at a mature enough stage where I can, from now on, shift my focus to another project that I have barely started working on - a graphics engine.
A lot has happened in the past years. I got a job in the automotive industry and even got promoted recently, so It's all going well for me. And I want to thank you for the support until now and for the great critique and advice I've gotten on my previous posts about the logger, it has helped me so much for what it's worth.
Anyway, I want to keep the post short and simple. So, why yet another logger? I've answered that in the documentation, but in short, I know it's the most banal project idea you've laid your eyes on recently, but in fact, it's actually an amazing learning experience. Depending on how deep you are willing to get to, writing a logger entails quite a lot of concepts, both deep language-specific knowledge and general computer science topics. If you were to ask me what's been the most pivotal project for my learning path, I would choose the logger instead of any half-baked graphics engine I've written in a heartbeat.
As always, I would appreciate it If you check it out, write a critique, an opinion, or blatantly assault me, it's all welcomed if it's aimed towards improvement and perfection. Contributions are appreciated as well, of course: https://github.com/ChristianPanov/lwlog
If you find it interesting enough you could also star it, that would be appreciated.
So what's been done since last year - overall rework and restructuring of the codebase, added asynchronous logging with the appropriate configurations that can be applied to it, which is probably the most notable of all changes, also added basic log message post formatting with fmt/std::format, depending on what you are using, which has been missing for a long time(such a basic feature, what a shame), and finally, comprehensive documentation overhaul. And quite a lot of other things in between, of course.
While I'll be shifting my focus to a new project, I remain committed to maintaining and improving the logger. Upcoming plans include refining the CMake file and enhancing the file sink with file mapping.
Thank you for your support and valuable feedback. Wishing you all happy holidays,
Chris
​
https://redd.it/18q5rv7
@r_cpp
Shouldn't c++23 be released by now?
https://redd.it/18vy4wg
@r_cpp
the more i code in this language....
the more it just makes sense.
srsly though the standard library in cpp is unlike any other standard library ive seen! it feels like a lot of effort was put into everything
so useful for DSA problems
also the ability to add a & to your params is the cherry on top
https://redd.it/18uq9jg
@r_cpp
uninttp v3.4 released
After a few years of refining and polishing what was originally a quirky C++ template hack, this library has come a long way and now supports a lot more types that can be passed as non-type template parameters since C++20 or later.
https://github.com/reacfen/uninttp
Any and all feedback is appreciated. Thank you for your time.
https://redd.it/18vbosi
@r_cpp
std::bitset
why on earth does std::bitset not have a function for clz/ctz? this basically makes it useless and you have to implement your own anyways. std::countl_zero ALSO has no overload for std::bitset ? generally i think the stl is very well designed but things like this really makes me wonder.
https://redd.it/18vbt2j
@r_cpp
C++20 vs C++26* basic reflection
Basic struct reflection example with C++20 vs C++26
struct foo {
int a{};
int b{};
int c{};
};
constexpr foo f{.a=1, .b=2, .c=3};
static_assert(1 == get<0>(f));
static_assert(2 == get<1>(f));
static_assert(3 == get<2>(f));
using std::literals::operator""sv;
static_assert("a"sv == get_name<0>(f));
static_assert("b"sv == get_name<1>(f));
static_assert("c"sv == get_name<2>(f));
C++20 - Kinda possible but with a lot of compiler hacks
// too long to display
Full example - https://godbolt.org/z/1vxv8o5hM
C++26 - based on proposal - https://wg21.link/P2996 (Note: that the proposal supports way more than that but C++20 not much)
template<auto N, class T>
[nodiscard] constexpr auto get(const T& t) -> decltype(auto) {
return t.:std::meta::nonstatic_data_members_of(^T)[N:];
}
template<auto N, class T>
[nodiscard] constexpr auto getname(const T& t) -> std::stringview {
return std::meta::nameof(std::meta::nonstaticdatamembersof(^T)N);
}
Full example - https://godbolt.org/z/sbTGbW635
Updates - https://twitter.com/krisjusiak/status/1741456476126797839
https://redd.it/18v89ky
@r_cpp
catch2 is bad?
Hello friends,
if been using catch2 for some time now and i have to say i'm very disappointed with it, my two major problems are:
1. cant break into gdb when an unexpected exceptions is thrown (this alone should be a deal breaker for anyone?) (https://github.com/catchorg/Catch2/issues/1030)
2. stepping into the actual function call when its wrapped in a REQUIRES(..) first goes to 5 internal catch function calls.
these two things alone make debugging a nightmare, so my question to you is:
is there another testing framework that doesn't suffer from these problems or is there anyway i can get rid of these two problems? Thank you for your suggestions.
​
https://redd.it/18s4nhe
@r_cpp
C++ Club 168: Safety, "C/C++", reflection, include order, Bjarne Stroustrup's quotes
https://youtu.be/spKvxc2R7nc
https://redd.it/18s2isl
@r_cpp
C++23 Views
Can someone explain the intent of the views added to the ranges library in C++23 standard library? Are they designed to replace something like eigen? They seem a little out of place and like a very small part of a numerics library. I really wish they would admit a numpy like implementation to C++.
https://redd.it/18ro7se
@r_cpp
Unexpected Ways Memory Subsystem Interacts with Branch Prediction - Johnny's Software Lab
https://johnnysswlab.com/unexpected-ways-memory-subsystem-interacts-with-branch-prediction/
https://redd.it/18rxgan
@r_cpp
Finally <print> support on GCC!!!
https://gcc.gnu.org/gcc-14/changes.html
https://redd.it/18rvloz
@r_cpp
What’s the best naming prefix for a global variable?
Answer: //
https://redd.it/18rbh8l
@r_cpp
The C++20 Naughty and Nice List for Game Devs
https://www.jeremyong.com/c++/2023/12/24/cpp20-gamedev-naughty-nice/
https://redd.it/18qnn7l
@r_cpp
C++ Career Paths & Embedded Developer
Hi,
I joined this subreddit couple of days ago. I am not sure if this is correct place to share this, but I see some similar posts so I decided to give it a try.
I am new graduate from Electrical and Electronics Engineering from a university in Turkey. I have been working as embedded system developer for 1 year in defense industry. I had good amount of C++ experience in during my student years and now I am coding in C++ everyday over a year due to my job requirement. I love this language but I do not like always working on low level software development. I am planning to do my master in Germany next year in EE&CS and searching for new career paths where I can translate my C++ experience and passion. Can you share with me some suggestions / career paths / opportunities that I can follow if there is any ? Thank you.
https://redd.it/18qh8tf
@r_cpp
Learning C++ from C
Hello, I'm currently an embedded systems engineer and I want to switch to programming on embedded Linux using C++, is there a playlist that will help me make this transition and learn the differences and extra features?
most playlists start from the beginning and teach the basics.
https://redd.it/18qb7nu
@r_cpp
A noobie's view on C++
After tinkering and having fun with this language for about 3 years (starting from late 2020 and still my favorite one) I've noticed some serious problems in the language or its ecosystem.
Problems of C++ (in my opinion) that still haven't been resolved:
1) terrible compilation times
2) no standard package manager
3) unreliable memory management in concurrent code
4) no standard build system
5) incomplete standard library
6) old harmful features not being removed due to backwards compatibility
7) slow implementation of the new versions by compiler vendors
8) inconsistent practices all over the C++ projects even in the standard library API
9) no reflection support
10) wrong defaults in the design of the language
All in all the language is tolerable but not fun to work with yet.
Additional info: For instance, smart pointers are not really smart and a programmer can easily mess things up by misusing them in concurrent code. They are not a replacement for a full fledged borrow checker. RAII is just not sufficient in a multi-threaded context. The std::unique_ptr can leak memory accidentally, and std::shared_ptr has a less than optimal implementation and efficiency.
Also, the language has a lot of wrong defaults. For instance:
- things should be immutable by default (unless declared with mut)
- functions should be noexcept by default (unless declared with throws)
- library functions should have two overloads one throwing exceptions and the other returning a std::expected<T, std::error_code> or just std::error_code in case T is void
- everything should have internal linkage by default (unless explicitly made extern)
- universal reference should be &&& (so not to be confused with rvalue reference)
- the operator& for the addressof operator should be replaced with operator@() (less confusion with bitwise AND)
- the dereference operator* should be replaced with something like operator$ (less confusion with multiplication)
And many more.
Of course not all of these things can be dealt with because then it'll no longer be C++. So I hope a C++ successor like Carbon implements these features.
https://redd.it/18q398c
@r_cpp