ch
Feedback
C++ - Reddit

C++ - Reddit

前往频道在 Telegram

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

显示更多
229
订阅者
无数据24 小时
无数据7
+230
帖子存档
C++ SVG graph I have a c++ code that allows me to set countries and borders using a matrix, it comes down to a graph.I can set a number of colors and withc colors. My code gives each country a color in such a way that if 2 countries are neighbours(they hve a border) they cant have the same color using Greedy coloring algorithm.I want now to show this graph by using a SVG file but i don't know how because i use VS Code, and the project must be set to a docker image and it must run using CMD only so how can i make this svg file work for any inputs and after i run it on CMD with docker run -it ssmth smth how do i get the svg link to open in browser https://redd.it/1hxfshq @r_cpp

Experimenting with #embed I recently learned that both clang and gcc have added support for [N3017](https://en.cppreference.com/w/c/preprocessor/embed) a.k.a `#embed` from C23 so naturally my first reaction was to see how well it works in C++ code. Given this code sample: #include <array> #include <cstdint> #include <experimental/array> #include <iostream> #include <utility> int main() { // works static constexpr char c_char_array[] = { #embed __FILE__ , '\0' }; static constexpr unsigned char c_unsigned_char_array[] = { #embed __FILE__ , '\0' }; static constexpr std::uint8_t c_uint8_array[] = { #embed __FILE__ , '\0' }; static constexpr auto std_make_char_array = std::experimental::make_array<char>( #embed __FILE__ , '\0' ); static constexpr auto std_make_unsigned_char_array = std::experimental::make_array<unsigned char>( #embed __FILE__ , '\0' ); static constexpr auto std_make_uint8_array = std::experimental::make_array<std::uint8_t>( #embed __FILE__ , '\0' ); // doesn't work // static constexpr std::byte c_byte_array[] = { // #embed __FILE__ // , '\0' // }; // static constexpr auto std_to_char_array = std::to_array<char>({ // #embed __FILE__ // , '\0' // }); // static constexpr auto initializer_list = std::initializer_list<char>{ // #embed __FILE__ // , '\0' // }; std::cout << &c_char_array; std::cout << &c_unsigned_char_array; std::cout << &c_uint8_array; std::cout << std_make_char_array.data(); std::cout << std_make_unsigned_char_array.data(); std::cout << std_make_uint8_array.data(); return 0; } Both [gcc](https://godbolt.org/z/T9YroochP) and [clang](https://godbolt.org/z/19zf5dsWv) support the same usages as far as I tested. What works: * `char`, `unsigned char`, `std::uint8_t` * C-style arrays * `std::experimental::make_array` What doesn't work: * `std::byte` * `std::initializer_list` * `std::to_array` I was most surprised that `std::to_array` doesn't work while `std::experimental::make_array` does, however after further investigation it seem likely that if `std::initializer_list` worked with `#embed` then `std::to_array` would as well. It's not surprising that a C23 standard doesn't work with `std::byte` however if/when a C++ version of this paper gets added to the standard I hope that type is added to the list. https://redd.it/1hxdv17 @r_cpp

How to get lldb on windows to show correct format on std containers (and other std related data)? Hello all, I am using clang via llvm-msvc, where it is always using msvc stdlib. I couldn't manage to change to clang's stdlib in cmake. Getting debugger working has been pretty challenging. starting from mismatch of python version on downloaded code. (lldb-dap is crashing, codelldb works). I have been unable to get the containers such as vector to show correctly. Seems I'll need to have custom formatters. Are there any for msvc std that I can use? How do you go with deciphering msvc's std containers to write the synthProviders? A more general question, How do you setup your llvm toolchain in windows? . What do you use for debugging? Please do share your tips and knowledge as most of the information I meet online is non c++ or non windows when it comes to llvm (as a fallback to msvc debugger is an easy solution) To answer my own question: As a workaround I am using llvm compiled via minigw, and then I can debug stdlib correctly via codelldb extension. lldb-dap still crashes! https://redd.it/1hx949d @r_cpp

The Old New Thing - Inside STL: Waiting for a std::atomic<std::shared_ptr<T>> to change, part 1 https://devblogs.microsoft.com/oldnewthing/20250108-00/?p=110732 https://redd.it/1hx6xox @r_cpp

C++ Keywords Knowledge Hello Everyone i have question do keywords had a specific data type that accept it like string or int or float i new on cpp so what do you think guys ?? https://redd.it/1hwxrf2 @r_cpp

In C99, memory allocation for a struct includes its size plus the size of its last member's type, enabling a flexible array member. A colleague called this 'Elastic Struct,' but I found no official term. Is there a recognized name for this technique in C99? https://redd.it/1hwvbn8 @r_cpp

function pointer to member what is the name and reference for this construct/idiom? I know it's somewhere in invocable standard but struggling to find exact text.
#include <functional>

struct F {
  void g();
  void h() {
    std::function<void(F&)> g = { &F::g };
    g(*this);
  }
};
edit: did find reference text: https://en.cppreference.com/w/cpp/utility/functional https://redd.it/1hwom89 @r_cpp

if constexpr vs overloads What should a C++ programmer choose by default: if constexpr for every type in one function or function overloads for every type with 2x more boilerplate code, but with ability to easier make a custom override later? https://redd.it/1hwqxgy @r_cpp

A little library for type-erasure: Erased https://github.com/qnope/Erased https://redd.it/1hwqi7a @r_cpp

Streaming (de)serialization and (de)compression in C++ Hi, I wanted to know options in C++ for streaming (de)serialization and (de)compression. Currently, I'm using cereal along with command line zstd tool for this purpose. Any better methods would be appreciated. Thanks. https://redd.it/1hwmy4y @r_cpp

Pipeline architectures in C++ - Boguslaw Cyganek - Meeting C++ 2024 https://www.youtube.com/watch?v=6UYXSu_9dXI https://redd.it/1hwjlt5 @r_cpp

"break label;" and "continue label;" in C++ Hi, you may have hard that C2y now has named loops i.e. break/continue with labels (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3355.htm). Following this, Erich Keane published N3377 (https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3377.pdf), which proposes a different syntax. I am about to publish a C++ proposal (latest draft at https://eisenwave.github.io/cpp-proposals/break-continue-label.html) which doubles down on the N3355 syntax and brings break label and continue label to C++, like: outer: for (auto x : xs) { for (auto y : ys) { if (/ ... /) { continue outer; // OK, continue applies to outer for loop break outer; // OK, break applies to outer for loop } } } There's also going to be a WG14 counterpart to this. https://redd.it/1hwdskt @r_cpp

When was your first memory? I can literally only remember things from when I was 6 and onwards. Anyone I know who had a great upbringing say they remember from 3 and onwards. I think trauma has suppressed a lot of my memories. But hearing others say they remember things from such an early age is a big reminder of the trauma. https://redd.it/1hwawck @r_cpp

A concept for isspecializationof Back in the day Walter Brown wrote a paper, wg21.link/p2098, proposing is_specialization_of which could test is a type was a specialization of a template, for example if std::vector<int> is a specialization of std::vector. I recently tried to make a concept for the same thing. Casey Carter posted on stackoverflow.com/questions/70130735 that the MS standard library had done this in `is-derived-from-view-interface` by doing template <template <class...> class Template, class... Args> void derivedfromspecializationimpl(const Template<Args...>&); template <class T, template <class...> class Template> concept derivedfromspecializationof = requires(const T& t) { derivedfromspecializationimpl<Template>(t); }; See [https://godbolt.org/z/6Pjvxesd1](https://godbolt.org/z/6Pjvxesd1) I then wondered if you could avoid the extra helper function derived\from_specialization_impl. So I ended up with this template <class T, template <typename...> class Template> concept isspecializationof = requires ( T const& t ) { // Check an immediately invoked lambda can compile <typename... Args> ( Template<Args...> const& ) { return true; } ( t ); }; which can be made terser although maybe less readable template <typename T, template <typename...> typename U> concept is_specialization_of = std::invocable<decltype([]<typename... Args>( U<Args...> const& ) { }),T>; See `https://godbolt.org/z/KaYPWf9he` So I'm not a concept or template expert so I was wondering if this is a good way to do this or if there are better alternatives. For example the above does not handle NTTPs and what about partial specializations? Any thought welcomed https://redd.it/1hw6a29 @r_cpp

Can we initialize and fill a (flat) hashmap in bulk? I have a compute shader that quickly generates a buffer of uint32's which is send back to the CPU, this data won't update so it is static. I require it to be in a hashmap because it is sparse and need fast lookups. The issue I have is that inserting the items from the buffer into the hashmap directly is slow. I use ankerl::unordereddense which is a flat hashmap, where the api is the same as std::unorderedmap. Is it possible to initialize this hashmap in one go efficiently, for example pre computing the buckets on the GPU and somehow assigning that to the hashmap? https://redd.it/1hw50nx @r_cpp

What to do now Hello everyone , I'm a bachelors student who just got done with DSA course in c++. Other then that I have also learned OOP in c++. Now I know I'm probably no way near a c++ developer but i was wondering what more skills should I acquire to start my journey as a freelancer. Thank you guys in advance https://redd.it/1hw1ui7 @r_cpp

How to Properly Generate compilecommands.json for a C++ Project Using CMake and Bear I’m trying to generate a `compilecommands.json file for [this project](https://github.com/ReactiveX/RxCpp) to use tools like clangd and clang-format. Here's what I've tried so far: 1. Setting CMAKEEXPORTCOMPILECOMMANDS=ON` in both the root and subdirectory `CMakeLists.txt`. 2. Running `cmake` like this: mkdir build cd build cmake .. -DCMAKE\EXPORT_COMPILE_COMMANDS=ON 3. Using Bear to capture the build process: bear -- cmake --build . (EDIT: I used bear without cmake to avoid overriding the json file). Despite this, compile_commands.json is either not generated or not usable (has [\] inside it). Any guidance or suggestions would be greatly appreciated! clang version: 18.1.8 cmake version: 3.31.3 https://redd.it/1hvxexe @r_cpp

Latest News From Upcoming C++ Conferences (2025-01-07) This Reddit post will now be a roundup of any new news from upcoming conferences with then the full list now being available at https://programmingarchive.com/upcoming-conference-news/ C++Online - 25th - 28th February 2025 Registration Now Open \- Purchase online main conference tickets from £99 (£20 for students) and online workshops for £349 (£90 for students) at https://cpponline.uk/registration/  FREE registrations to anyone who attended C++ on Sea 2024 and anyone who registered for a C++Now ticket AFTER February 27th 2024. Accepted Sessions Announced \- have now also announced the majority of the sessions and workshops that will be presenting at C++Online 2025. You can find the current list at https://cpponline.uk/schedule Open Calls \- The following calls are now open which all give you FREE access to C++Online: Online Volunteers \- Attend C++Online 2025 by becoming an online volunteer! Find out more including how to apply at https://cpponline.uk/call-for-volunteers/ Online Posters \- Present an online poster in their virtual venue. Find out more and apply at [https://cpponline.uk/posters](https://cpponline.uk/posters) Open Content \- Present a talk, demo or workshop as open content at the start or end of each day of the event. Find out more and apply at https://cpponline.uk/call-for-open-content/ Meetups \- If you run a meetup, then host one of your meetups at C++Online which also includes discounted entry for other members of your meetup. Find out more and apply at [https://cpponline.uk/call-for-meetups/](https://cpponline.uk/call-for-meetups/) C++Now C++Now 2025 Announced \- have announced that the 2025 conference will run from April 28th - May 2nd. Find out more including what to expect at [https://cppnow.org/announcements/2024/12/announcing-cppnow-2025/](https://cppnow.org/announcements/2024/12/announcing-cppnow-2025/) CppNorth CppNorth 2025 Call For Speakers Open \- Speakers have until 23rd February to submit proposals for the CppNorth 2025 conference. CppCon CppCon Academy Proposal Deadline \- A quick reminder that any proposals for CppCon Academy 2025 Classes need to be submitted by January 31st. Find out more about submitting here [https://cppcon.org/cfp-for-2025-classes/](https://cppcon.org/cfp-for-2025-classes/) ADC ADC 2025 Dates & Location Announced! \- ADC 2025 will return both online and in-person in Bristol UK from Monday November 10th - Wednesday November 12th Last Chance To Purchase ADCxIndia Tickets \- In-person tickets can be purchased at https://www.townscript.com/e/adcxindia25 https://redd.it/1hvuv0o @r_cpp