News for hackers. Stuff that matters.
Re:Why Rust closures are somewhat hard by saghm on Monday September 10, 2018 @03:16PM (#17954281)
Would it be possible to add C++'s implementation to C, or does it rely on other C++ features that C doesn't already support?
Re:Why Rust closures are somewhat hard by whyever on Monday September 10, 2018 @03:40PM (#17954509)
C does not have `auto`, so you couldn't store closures in local variables.
Re:Why Rust closures are somewhat hard by v_lisivka on Monday September 10, 2018 @03:54PM (#17954642)
In C, you can use typeof().

  #define max(a,b) \
  ({ typeof (a) _a = (a); \
      typeof (b) _b = (b); \
    _a > _b ? _a : _b; })
https://gcc.gnu.org/onlinedocs/gcc/Typeof.html
Re:Why Rust closures are somewhat hard by wahern on Monday September 10, 2018 @04:17PM (#17954841)
typeof is supported by everything[1] except the C standard. It was rejected in the 1990s and nobody on the committee seems to want to revisit the decision.

To be fair, typeof is not as useful without statement expressions (`({ ... })`), and statement expressions aren't as widely supported.

[1] All the major compilers support it (clang, GCC, IBM, Intel, Microsoft, Solaris, etc), plus or minus underscores in the identifier.

Re:Why Rust closures are somewhat hard by Longhanks on Monday September 10, 2018 @04:02PM (#17954723)
You’re not wrong, but C has __auto_type (at least GCC and clang support it, no idea about MSVC): https://gcc.gnu.org/onlinedocs/gcc/Typeof.html
Re:Why Rust closures are somewhat hard by int_19h on Monday September 10, 2018 @05:03PM (#17955174)
It's a language extension, not standard C.
Re:Why Rust closures are somewhat hard by calebh on Monday September 10, 2018 @03:50PM (#17954600)
C++ closures are a bit weird in that you have to specify how the captured data needs to be captured (either by reference or by copy). How the data is handled also depends on the implementation of std::function (if you decide to wrap your lambdas in that). It's possible that the implementation for std::function actually makes a reference-counted heap allocation every time a new closure is created. Anyway, the result is a lot of complexity that would be impossible to shoe-horn into C.
Re:Why Rust closures are somewhat hard by aaaaaaaaaab on Monday September 10, 2018 @03:46PM (#17954568)
Yes: classes.

Every closure is an anonymous class in C++.