logoalt Hacker News

ueckeryesterday at 2:56 PM2 repliesview on HN

Or just do it in C.

  #define span(T) struct span_##T { size_t len; T *data; }
  #define span_access(T, x, i) (*({              \
    span(T) *_v = (x);                           \
    auto _i = (i);                               \
    if (((size_t)_i) >= _v->len) abort();        \
    &_v->data[_i];                               \
  }))
https://godbolt.org/z/TvxseshGc

Replies

nananana9yesterday at 3:38 PM

Still requires a gcc/clang specific extension (although this one I'd be very happy to see standardized)

show 1 reply
fuhsnnyesterday at 4:34 PM

The fact that pointer types can't be used with this pattern without typedef still seems kinda primitive to me.

show 1 reply