C++ - Reddit
225 subscribers
48 photos
8 videos
24.6K links
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
Download Telegram
Right way to GITHUB ? I don't get it .

I. Wanted to put something I have been working on . A Rotating cube made using SFML . But I don't get what files to upload , what files to ignore. And why does my own repo when download the zip file, say it contains virus. 😕 Like WTF.
https://github.com/GochiStuff/SpinEngine3D
I do not contain virus. Please Help me out. Any tips will be good too .



https://redd.it/1hg50x9
@r_cpp
RFC: I have never thought "unsigned int(eger)" made sense

In programming, why do we call unsigned values "unsigned ints" or "uints"?

Integers are signed by definition. It's a contradiction in terms.

Unsigned values are called the naturals.

Why don't we call them "nats"?

I've added these definitions to my stdfelice.h header, where I fix stuff in C/C++ that I think is stupid:

typedef unsigned int nat;

typedef uint8t nat8t;
typedef uint16t nat16t;
typedef uint32t nat32t;
typedef uint64t nat64t;

typedef uintptrt natptrt;

#define NATMAX UINTMAX

This has the upside that the labels are the same char width as ints! No more ugly unaligned code with mixed signage!

-----

(As an aside, I also define flt, flt32t and flt64t, purely for cosmetic reasons. This is not something I would argue for, though. I'm just mentioning it in passing in case anyone else who's OCD about stuff like function argument lists lining up is interested.)

https://redd.it/1hgdlv6
@r_cpp
what gui liberary do you recommend me to use?

so there are so many libraries for C++ and I'm looking for a good library to create my GUI app and before you say do your own research I did and found many outdated and old libs so I'm looking for a modern GUI library that can be compiled with clang++ bc I want the maximum speed possible I tried wxwwidgets but the tutorials for it is kinda limited and it doesn't work with clang for example this makefile doesn't work unless I replaced clang with g++ and yes I have a clang-mingw compact ``pacman -S mingw-w64-clang-x86_64-gcc-compat``

all:
    clang++ -std=c++17 -Werror -O3 -ffast-math \
    main.cpp -o runme.exe -Wall -ID:\echo\include -ID:\echo\lib\gcc1320x64dll\mswu \
    -LD:\echo\lib\gcc1320x64dll -lwxbase32u -lwxmsw32ucore -lwxmsw32uadv -lwxmsw32uhtml\
    -lwxmsw32u
aui -lwxmsw32uxrc -lwxmsw32ugl -lwxmsw32umedia -lwxmsw32urichtext \
    -lwxmsw32upropgrid -lwxmsw32ustc -fuse-ld=lld

https://redd.it/1hgfmgp
@r_cpp
Clangd landed "support outgoing calls in call hierarchy" feature which allows for call graph views from IDEs (including VSCode) using clangd

https://github.com/llvm/llvm-project/pull/117673

It's in main so if you have a package repository with the latest llvm you can update clangd-20 and try it out.

Debian:
apt install clangd-20

You may have to set your IDE settings to specifically call clangd-20


https://redd.it/1hggwpd
@r_cpp
Flashback: How You Began with C++

If you could restart your journey with the C++ language, what would you avoid, improve, focus less on, dedicate more time to, or learn differently?

Starting with myself:

C++98/03: Focus on mastering memory management principles, especially RAII and the STL, while minimizing reliance on raw pointers and manual resource handling.
C++11/14: Prioritize understanding modern features like move semantics, smart pointers (std::unique_ptr, std::shared_ptr), and lambda expressions to write more efficient and maintainable code.
C++17/20: Invest time in leveraging features such as structured bindings, `std::optional`, `std::variant`, and `constexpr`, with an emphasis on writing concise and expressive code. Advanced threading and concurrency tools like `std::jthread` and `std::async` would also be key.
C++23/26: Focus on adopting ranges, concepts, std::expected, and std::format to implement type-safe and expressive designs, ensuring better clarity, maintainability, and performance.

Engineering, otherwise: I didn’t think much about architecture back then.

Note: Don’t roast me for the C++98/03 part—I was naïve when I started learning 13 years ago!

https://redd.it/1hgl287
@r_cpp
How to achieve senior level in C++ software engineer?

I've pursued C++ software path for an amount of time. Now I have gained a certain skill in C++, system design, DSA, multithreading, OOAD,...

I just wonder if I have to learn additional skills or complete more projects and gain enough experience to gain senior level? Btw, Could you share your own path to becoming a senior C++ software engineer?

https://redd.it/1hgmyh9
@r_cpp
2025-12 post-Wrocław Mailing

The WG21 C++ 2025-12 post-Wrocław Mailing is available at https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/#mailing2024-12.

 There are 167 papers, so light holiday reading.

The 2025-01 pre-Hagenberg mailing deadline is Monday January 13th 16:00 UTC.

Happy holidays from your friendly neighborhood Admin Chair!



https://redd.it/1hgq9l5
@r_cpp
License manager for a desktop application

Any recommendations for a good license manager? Back in the day nearly 11 years back I had some experience with using flexlm and is that still used or any other recommendation. The usecase is to license a desktop scientific application. Appreciate your help. This is to support an app built in C

https://redd.it/1hgufo6
@r_cpp
Struggling to install protobuf

Hi Everyone,

I hope you're all doing well. I am trying to learn about Protobuf and proceeded to install the protoc and C++ runtime for it. I have been stuck on installation for 3 days and nothing seems to be helping. I am trying to install it on WSL 2 Ubuntu-24.04.

These are the steps I followed:

1) Installed the dependencies:

sudo apt-get install g++ git bazel

git clone `https://github.com/protocolbuffers/protobuf.git`

cd protobuf

git checkout v29.1

git submodule update --init --recursive

2) Build the project:

bazel build --enable_bzlmod --enable_workspace :protoc :protobuf


Errors encountered:

Repository rule http_archive defined at:

/root/.cache/bazel/_bazel_root/24649be5a15de4f23ba9f9f874206382/external/bazel_tools/tools/build_defs/repo/http.bzl:392:31: in <toplevel>

ERROR: /root/.cache/bazel/_bazel_root/24649be5a15de4f23ba9f9f874206382/external/system_ruby/BUILD.bazel:29:1: name 'sh_binary' is not defined (did you mean 'cc_binary'?)

ERROR: /root/.cache/bazel/_bazel_root/24649be5a15de4f23ba9f9f874206382/external/rules_cc+/cc/private/toolchain/BUILD:96:14: While resolving toolchains for target @@rules_cc+//cc/private/toolchain:compiler (397c932): invalid registered toolchain '@system_ruby//:toolchain': no such target '@@system_ruby//:toolchain': target 'toolchain' not declared in package '' defined by /root/.cache/bazel/_bazel_root/24649be5a15de4f23ba9f9f874206382/external/system_ruby/BUILD.bazel

ERROR: /root/Documents/protobuf_practice/src/protobuf-29.1/build_defs/BUILD.bazel:27:29: errors encountered resolving select() keys for //build_defs:config_msvc

ERROR: /root/Documents/protobuf_practice/src/protobuf-29.1/BUILD.bazel:232:10: errors encountered resolving select() keys for //:protoc

ERROR: Analysis of target '//:protoc' failed; build aborted

INFO: Elapsed time: 6.270s, Critical Path: 0.05s

INFO: 1 process: 1 internal.

ERROR: Build did NOT complete successfully

FAILED:

Fetching repository @@rules_kotlin+; starting

Fetching repository @@rules_go+; starting

Fetching repository @@rules_shell+; starting

Fetching repository @@rules_buf+; starting

Fetching https://github.com/bazelbuild/rules\_kotlin/releases/download/v1.9.6/rules\_kotlin-v1.9.6.tar.gz; 2.3 MiB (10.5%)

root@DESKTOP-BOTT89G:\~/Documents/protobuf_practice/src/protobuf-29.1# bazel build --enable_bzlmod --enable_workspace :protoc :protobuf --check_direct_dependencies=off

ERROR: /root/.cache/bazel/_bazel_root/24649be5a15de4f23ba9f9f874206382/external/system_ruby/BUILD.bazel:29:1: name 'sh_binary' is not defined (did you mean 'cc_binary'?)

ERROR: /root/.cache/bazel/_bazel_root/24649be5a15de4f23ba9f9f874206382/external/rules_cc+/cc/private/toolchain/BUILD:96:14: While resolving toolchains for target @@rules_cc+//cc/private/toolchain:compiler (397c932): invalid registered toolchain '@system_ruby//:toolchain': no such target '@@system_ruby//:toolchain': target 'toolchain' not declared in package '' defined by /root/.cache/bazel/_bazel_root/24649be5a15de4f23ba9f9f874206382/external/system_ruby/BUILD.bazel

ERROR: /root/Documents/protobuf_practice/src/protobuf-29.1/build_defs/BUILD.bazel:27:29: errors encountered resolving select() keys for //build_defs:config_msvc

ERROR: /root/Documents/protobuf_practice/src/protobuf-29.1/BUILD.bazel:232:10: errors encountered resolving select() keys for //:protoc

ERROR: Analysis of target '//:protoc' failed; build aborted

INFO: Elapsed time: 0.434s, Critical Path: 0.01s

INFO: 1 process: 1 internal.

ERROR: Build did NOT complete successfully

FAILED:

Fetching repository @@rules_kotlin+; starting

Fetching repository @@rules_go+; starting

Fetching repository @@rules_shell+; starting

Fetching repository @@rules_buf+; starting



Can anyone please list out the steps to install it?
It could be either using CMAKE or Bazel.

I have tried checking YouTube but all of the installation procedures are outdated and make use of the zip file protobuf-cpp-3.11.2.tar.gz which doesn't exist anymore on the GitHub repo.


I would be grateful if anyone could help me out. Thank you



https://redd.it/1hgxgd8
@r_cpp
constexpr of std::string inconsistent in c++20

constexpr auto foo() {
static constexpr std::string a("0123456789abcde"); // ::size 15, completely fine
static constexpr std::string b("0123456789abcdef"); // ::size 16, mimimi heap allocation

return a.size() + b.size();
}

int main() {
constexpr auto bar = foo();
std::cout << "bar: " << bar << std::endl;
}

This will not compile with clang-18.1.8 and c++20 unless you remove the 'f' in line 3. What?

https://redd.it/1hhejk6
@r_cpp
learning cpp

I will start to learn cpp and I look for someone start together and i hope if some one give me roadmap two start

https://redd.it/1hhi92n
@r_cpp
Alignment crimes

I've finally realized why templates can be generic on both `class` and `typename`:

template< class These
typename Names
typename Align
>

(assuming an 8-wide indentation of course)

\---

While I'm at it - C# has this interesting thing you can do with a switch:

switch(AddRed(),AddGreen(),AddBlue())
{
case (true ,true ,true ): return White;
case (true ,true ,false): return Yellow;
case (true ,false,true ): return Magenta;
case (true ,false,false): return Red;
case (false,true ,true ): return Cyan;
case (false,true ,false): return Green;
case (false,false,true ): return Blue;
case (false,false,false): return Black;
}

which we don't really have in C++ but you *can* get the same nicely aligned return values:

auto r = add_red();
auto g = add_green();
auto b = add_blue();
if(r) if(g) if(b) return white;
else return yellow;
else if(b) return magenta;
else return red;
else if(g) if(b) return cyan;
else return green;
else if(b) return blue;
else return black;

all I need now is a clang-format rule to enforce this

https://redd.it/1hhpedl
@r_cpp
When can template parameters be omitted?

You occasionally see a template like MyClass<T,U,V,> used like MyClass<T>. That is, U and V are omitted for some reason.

Now I'm aware that template parameters can be defaulted but are there any other situations where parameters can be omitted?

Are there any situations where it's not just the right hand parameters that can be omitted? Can you ever just specify MyClass<V> and have T and U be deduced? If so, how does the compiler know you're supplying V and not T?


https://redd.it/1hhslyc
@r_cpp