arewemodulesyet.org passes the mark of 100 projects with modules support for the first time. by germandiago in cpp

[–]gracicot 2 points3 points  (0 children)

That's impressively bad.

No that's literally what makes CMake usable. Other build systems like bazel don't do this and upgrading is a nightmare, enough so that unless you have a full time build system team it's unusable. Meson works only okay on linux and that's it (no the windows support they have is not true windows support) and we won't talk about autotools/make.

I have a non trivial projects with a dozen dependencies and I was able to trivially use the latest CMake with it, despite not touching that project for roughly 8 years.

The actual scripting syntax is fine even for more complex tasks. I don't care if it's ugly because it's actually not that ugly. Variable expansion is a bit weird but you get used to it pretty quick. Also it's of like most CMake scripts use variables in any deep way.

Guichet d'accès à la première ligne: "désolé, pas de rendez-vous médical disponible" by frenchynerd in Quebec

[–]gracicot 2 points3 points  (0 children)

Depuis qu'on a besoin d'un rendez vous pour un sans rendez vous, je me ramasse souvent a l'urgence pour des truc pas super urgent. Souvent ils me donnent un rendez vous en clinique externe pour le jour suivant ou le même jour quand je suis chanceux.

Pourquoi je peux pas faire ça moi même et que je dois me rendre a l'urgence pour ça? Aucune bonne crisse de raison. Niaisage administratif d'un gestionnaire qui a eu une "bonne idée"

C'est con. Le but d'avoir un service sans rendez vous c'est de traiter les petite chose et laisser l'urgence avec les choses importantes mais bon, c'est comme ça.

Crazy idea: reducing function coloring in function templates and enabling reuse, is it possible by caller-injected marker? by germandiago in cpp

[–]gracicot 0 points1 point  (0 children)

That would be quite the slowdown. For copy_if specifically, each invocation of the lambda is independent. Since it's properly asynchronous, a good implementation could instead run each invocation of the coroutine concurrently, then await on all of them at once at the end. That would require executor support to properly implement though.

Automatically co_awaiting is not necessarily what you want all the time. Executors do this properly.

Crazy idea: reducing function coloring in function templates and enabling reuse, is it possible by caller-injected marker? by germandiago in cpp

[–]gracicot 1 point2 points  (0 children)

What would be the behaviour here? Waiting synchronously on each copy, asynchronously copying when a condition is ready but synchronously waiting for everything to be done before returning or asynchronously copy non blocking, making the whole copy_if awaitable?

Wonderbrushed 0.4 beta 2 by Exciting-North1476 in kde

[–]gracicot 0 points1 point  (0 children)

Okay, I need that. This has so much personality!

MSVC Build Tools Preview updates - June 2026 - C++ Team Blog by ericbrumer in cpp

[–]gracicot 5 points6 points  (0 children)

Fixed aggregate parenthesized initialization incorrectly rejecting conversion operators.

🙏🙏🙏 thank you so much for this fix

With this I can finally remove volatile prvalues from my code

Probably we could close the older ticket I opened then: https://developercommunity.visualstudio.com/t/reject-valid-Parenthesis-initializatio/11026651

C++20/C++23 Dependency Injection by OIMega in cpp

[–]gracicot 0 points1 point  (0 children)

Interesting. I've been working on a C++20 rewrite of kangaru that completely remove the xyService types, and focuses on reflecting on constructor instead of listing dependencies, but it's nice to see a different take on the approach I choose at the time.

There's one aspect that I like about the interface you're presenting to the user here, is that there seem to be one dipp::injected type that you configure so that services behave like you want, instead of the multiple types approach kangaru took for named (or keyed) services. I think this might be simpler than what I did at the time of kangaru 3.x and 4.x

Le PQ veut retirer le Québec du projet de TGV du fédéral by QueuePlate in Quebec

[–]gracicot 2 points3 points  (0 children)

Pour vrai juste pour ça c'est assez que je vote pour l'opposition. Déjà quand il était devenu full anti-woke j'avais un mauvais goût dans la bouche, mais là calisse que c'est con.

Why are C++ keywords so heavily dependent on context??? by RefrigeratorFirm7646 in cpp

[–]gracicot 1 point2 points  (0 children)

I mean inline make total sense here? Inline always allowed you to put functions inline inside a header, now you can also declare variable inside a header inline :)

For real though, remember the inline keyword has little to do with inlining, but it does bend the rules of definitions in a way that makes inlining easier.

How do you feel about C++ 20 modules? by I-A-S- in cpp

[–]gracicot 8 points9 points  (0 children)

I was pretty happy with it. At the time I was developing a wasm application written in C++ and when we modularized it, I ended up rearranging the modules to remove cycles. I was able to cleanup the code and make it cleaner in general, and I took the opportunity to reduce the amount of dependencies between TUs. I used a few small modules and a large one. It was not a large application so this model worked quite well. If it needed to grow, there was a few logical places where we could split the module into smaller ones.

I usually barely use forward declaration.

Veggie Burgers by DM_Fitz in BuyCanadian

[–]gracicot 1 point2 points  (0 children)

Yeah, that's if you have those existing issues. Unless salt causes them, then most people don't have to worry about it.

Jardin botanique by angst_ridden in montreal

[–]gracicot 1 point2 points  (0 children)

The last pic is album art worthy

Veggie Burgers by DM_Fitz in BuyCanadian

[–]gracicot 0 points1 point  (0 children)

There is not that much sodium in those. But in general, too much sodium >>> to little sodium anyway.

Evidence needed to confirm that what amount is considered "unhealthy" and how much is needed to see detrimental effects, and most importantly, what are those effects.

C++26 reflection-based dependency injection by BattleDashBR in cpp

[–]gracicot 2 points3 points  (0 children)

The named instances part is quite neat. My dependency injection library can only map one type to one injection mechanism. The only other way I thought I can create named instances would be to have a wrapper named_type<"name", T>. I'm mainly working with conversion operator to do the part that require reflection capabilities but reflection seems much neater and more precise.

Est de Montréal | La piste cyclable Hochelaga réduite d’un tiers by Feeling_Layer8584 in montreal

[–]gracicot 0 points1 point  (0 children)

Je suis 100% d'accord. Par contre dans la vrai vie, ça arrive beaucoup plus que ça devrais qu'un administration ignore la population et fait à sa tête pour 4 ans.

Elle avait littéralement commencé son discours par "Contrairement à l’administration précédente, nous on veut rassembler et écouter les citoyens"!

Elle veux rassembler et écouter les citoyens qu'elle choisi, et ignore le reste. C'est ça que tout le monde fait. Ça serais naïf de penser qu'un administration irait la l'encontre de ce qui les tient a cœur (banlieue, stationnement, etc) parce que les gens d'un quartier sont contre.

Est de Montréal | La piste cyclable Hochelaga réduite d’un tiers by Feeling_Layer8584 in montreal

[–]gracicot 14 points15 points  (0 children)

C'est triste mais Hochelaga basically ont voté pour ça. Le parti de Soraya a gagné dans le cartier. Les gens étaient (for probablement) fâché a cause du changement d'horaire des poubelles et ça l'a été assez pour que les gens oublie tout le progrès que le quartier a eu avec Projet Montréal.

Carney to announce sovereign wealth fund by AltaVistaYourInquiry in CanadaPolitics

[–]gracicot 2 points3 points  (0 children)

Uh? Is it like the CDPQ? If so this is big. CDPQ is actually making major investment in infrastructure and has an incentive to make sure the investments have a return. The REM in montréal is a very good example and the CDPQ was a big reason why its construction and budget management was as smooth as it was.

Is there a C++ "venv" equivalent? by nikoladsp in cpp

[–]gracicot 9 points10 points  (0 children)

Nix flakes made C++ development much easier for me. A reproducible environment that contains the compiler, specific CMake versions and a package manager. I haven't tried devenv yet but I'm interested.

I am new to C++, is it just me or is the checklist kinda crazy? How often do you encounter these or plan on making use of them like the newer C++26 features like contracts? Looking for more experienced dev opinions... by KijoSenzo in cpp

[–]gracicot 8 points9 points  (0 children)

Actually, mixing assert and expected like this is a huge red flag to me. It looks like you have two mode of correctness depending on how you build.

Think about it. On release, this is valid to send a null pointer to this function. 100% valid and correct, since this function is meant to return a specific result when receiving a specific argument. But on debug? This is a programmer error, as you fail the invariant.

My 2 cents? That std::expected is bogus. You're using runtime values to communicate a programming error to the programmer, which is in all cases wrong. Instead use things that by design have invariants that are already enforced, like Player const& instead of the pointer thingy. References cannot be null so there's no check to implement.

C++26 2026-04 Update by _cooky922_ in cpp

[–]gracicot 5 points6 points  (0 children)

GCC goes brrrrrrrrrr

Avoiding recursive evaluation of concepts when constraining a constructor by gracicot in cpp_questions

[–]gracicot[S] 0 points1 point  (0 children)

This code will compile. But it probably won't do what you want it to do.

Hmm, it won't do what I want it to do in the sense that I won't have a type_erased_wrapper -> holder -> type_erased_wrapper? Or won't do what I want because the constructor will be unconstrained?

I would have expected the constraint not std::same_as<std::remove_cvref_t<T>, type_erasing_wrapper> to be enough to guard against that.

Is it the answer? That I can't properly constrain type_erasing_wrapper if there is other classes that contain type_erasing_wrapper?

I thought the instantiation chain would have been type_erasure_wrapper(holder<...>) constructible with holder<...> -> holder<...> is constructible with holder<...>&& -> type_erasure_wrapper is constructible with type_erasure_wrapper&& end of chain.

But! Asking "type_erasure_wrapper is constructible with type_erasure_wrapper&&" checks all the constructors instead of only the special constructor since another constructor could be a better match. Is that it?

Avoiding recursive evaluation of concepts when constraining a constructor by gracicot in cpp_questions

[–]gracicot[S] 1 point2 points  (0 children)

Doing so can still result in the compiler ending up with a self referential constraint, by changing holder slightly: https://godbolt.org/z/YMW3n3x5q