top | item 44284735 (no title) mandarax8 | 8 months ago What he shows here is 75% of c++26's std::function_ref. It's mainly missing variadic arguments and doesn't support all types of function objects.https://github.com/TartanLlama/function_ref/blob/master/incl... discuss order hn newest kjksf|8 months ago I can honestly say that I couldn't write that thing in 100 years.I can't even read it.That's the fundamental problem with C++: I've understood pretty much all Go code I ever looked at.The code like the above is so obtuse that 0.001% of C++ programmers is capable of writing it and 0.01% is capable of understanding it.Sure, I can treat it as magic but I would rather not. moonshadow565|8 months ago It's not that complex if you remove all the stuff you don't use: https://godbolt.org/z/rM9ejojv4 .Main things you would need to understand is specialization (think like pattern matching but compile time) and pack expansion (three dots). mandarax8|8 months ago Yeah it's a shame that to go from your idea to something that's 'general' (ie just some arbitrary arguments) you need to write this arcane garbage. winocm|8 months ago Consider this implementation:https://llvm.org/doxygen/STLFunctionalExtras_8h_source.html spacechild1|8 months ago Do you understand how your compiler works? Shouldn't you be writing assembly instead? You can't understand all internals and that's perfectly fine.Why do you even care how std::function is implemented? (Unless you are working in very performance critical or otherwise restricted environments.) load replies (2)
kjksf|8 months ago I can honestly say that I couldn't write that thing in 100 years.I can't even read it.That's the fundamental problem with C++: I've understood pretty much all Go code I ever looked at.The code like the above is so obtuse that 0.001% of C++ programmers is capable of writing it and 0.01% is capable of understanding it.Sure, I can treat it as magic but I would rather not. moonshadow565|8 months ago It's not that complex if you remove all the stuff you don't use: https://godbolt.org/z/rM9ejojv4 .Main things you would need to understand is specialization (think like pattern matching but compile time) and pack expansion (three dots). mandarax8|8 months ago Yeah it's a shame that to go from your idea to something that's 'general' (ie just some arbitrary arguments) you need to write this arcane garbage. winocm|8 months ago Consider this implementation:https://llvm.org/doxygen/STLFunctionalExtras_8h_source.html spacechild1|8 months ago Do you understand how your compiler works? Shouldn't you be writing assembly instead? You can't understand all internals and that's perfectly fine.Why do you even care how std::function is implemented? (Unless you are working in very performance critical or otherwise restricted environments.) load replies (2)
moonshadow565|8 months ago It's not that complex if you remove all the stuff you don't use: https://godbolt.org/z/rM9ejojv4 .Main things you would need to understand is specialization (think like pattern matching but compile time) and pack expansion (three dots).
mandarax8|8 months ago Yeah it's a shame that to go from your idea to something that's 'general' (ie just some arbitrary arguments) you need to write this arcane garbage.
winocm|8 months ago Consider this implementation:https://llvm.org/doxygen/STLFunctionalExtras_8h_source.html
spacechild1|8 months ago Do you understand how your compiler works? Shouldn't you be writing assembly instead? You can't understand all internals and that's perfectly fine.Why do you even care how std::function is implemented? (Unless you are working in very performance critical or otherwise restricted environments.) load replies (2)
kjksf|8 months ago
I can't even read it.
That's the fundamental problem with C++: I've understood pretty much all Go code I ever looked at.
The code like the above is so obtuse that 0.001% of C++ programmers is capable of writing it and 0.01% is capable of understanding it.
Sure, I can treat it as magic but I would rather not.
moonshadow565|8 months ago
Main things you would need to understand is specialization (think like pattern matching but compile time) and pack expansion (three dots).
mandarax8|8 months ago
winocm|8 months ago
https://llvm.org/doxygen/STLFunctionalExtras_8h_source.html
spacechild1|8 months ago
Why do you even care how std::function is implemented? (Unless you are working in very performance critical or otherwise restricted environments.)