#include <iostream>
typedef char (*callback)(int *data);
typedef char (callback2)(int *data);
typedef char callback3(int *data);
char fun_a(int *d)
{
    if (*d == 10)
        return 'A';
    else
        return 'B';
}
int main()
{
    int num = 10;
    callback cb_1_a;
    cb_1_a = fun_a;
    std::cout << cb_1_a(&num) << std::endl;
    callback cb_1_b;
    cb_1_b = &fun_a;
    std::cout << cb_1_b(&num) << std::endl;
    callback cb_1_c;
    cb_1_c = &fun_a;
    std::cout << (*cb_1_c)(&num) << std::endl;
    /*
    callback2 cb2;
    cb2 = fun_a;    // wrong
    callback3 cb3;
    cb3 = fun_a;    // wrong
    */
    return 0;
}
C++ compiler doesn't complain about the typedef of callback2 and callback3.
Question> What do typedef char (callback2)(int *data) and typedef char (callback3)(int *data) mean? Is there a use case where I can apply them?
 
     
     
    