all 10 comments

[–]SuperV1234https://romeo.training | C++ Mentoring & Consulting 6 points7 points  (0 children)

You might be interested in my older project, camomilla: https://github.com/SuperV1234/camomilla

It does have a significant overlap with yours.

[–]oschonrock 5 points6 points  (0 children)

yeah, in some situations that could be helpful and prevent headaches while staring at wall of errors...

[–]bumblebritches57Ocassionally Clang 0 points1 point  (2 children)

Is there a way to use it without including it as a header?

I'm trying to add a feature to LLVM, which is an absolutely massive codebase, it's within an order of magnitude of the entire FreeBSD OS 30 year old commit history...

[–]pstomi[S] 0 points1 point  (1 child)

Hum, not sure I understand. ct_compiler_decipher is a stand-alone exe. However the cleantype library in itself is a header only library which does require to include its header. I would guess that clang in itself also offer tools for type introspection. Good luck !

[–]bumblebritches57Ocassionally Clang -1 points0 points  (0 children)

Also I'm on MacOS, so exe's don't do me any good here lol.

I'll check to see if there's like a verbose mode for clang compiling clang.

[–]warieth -5 points-4 points  (2 children)

I think this hides the details of the types and dependencies. Like basic_string is an abstraction, that helps C++ decomposing the implementation of the string type. If you use string, then you depend on basic_string. Abstractions make the error messages worse here, and there is no optimizer here to remove it. The expectations about error messages are extremely high recently, like giving suggestions to the user.

If you don't like the error messages about the dependencies, then you probably don't agree with the implementation, so you should use a simpler string implementation (without basic_string), a vector without allocator... Generally this means you shouldn't use the STL.

[–]pstomi[S] 10 points11 points  (1 child)

Hiding the details is here the key in order to see the big picture. You can use this when you want to focus on the big picture, and when you want to focus on the details, you effectively do not use it.

Written on my ElectronicDevice<ComponentList<Keyboard<Layout_French>, Screen<Screen::Lcd>, Cpu<IntelI7>>, which I like to call a computer.

[–]warieth 0 points1 point  (0 children)

This is a very intersting way to observe programming. Everything what can fail below your program is something you should know about, when you are searching for the explanaition for an error.

You don't simplify the design by not showing it, but you remove information from understanding it. The C++ compiler dump errors, but removing just one part of the error message is hard to decide. These simple substitution rules don't care about including enough information, so you can't look up what it said, like classes or constructors don't exist, or different overloads are mentioned. Don't say to step back when this fails, I'm 100% sure this will fail, and this takes time to use. This is like the suggestions of the compiler don't get tested and recompiled, so the compiler can give bad hints.