#include <stdio.h>

typedef enum {tarasB = 0, superhackkiller1997, other_shit} users_t;

const char * users[] = {"tarasB", "superhackkiller1997", "other_shit"};

typedef struct say_struct_t {
  users_t usr;
  void operator () (const char * str) {
    fprintf(stderr, "%s: %s\n", users[usr], str);
  }
} *say_struct_p;

say_struct_t bind(users_t usr) {
  say_struct_p p = new say_struct_t;
  p->usr = usr;
  return *p;
}

int main(void) {
  bind(tarasB)("shit");
  bind(superhackkiller1997)("i'm god");
  bind(other_shit)("ko-ko-ko");
  return 0;
}