typedef int P();
typedef int Q();
class X {
static P(Q); // define Q to be a P.
// equivalent to `static int Q()`
// the parentheses around Q are redundant
// Q is no longer a type in this scope
static Q(P); // define Q to be a function
// taking an argument of type P
// and returning an int.
// equivalent to `static int Q(int())`
}
ИМО, «Q больше не является типом в этой области» означает, что Q теперь является именем функции, так почему его можно использовать как статический Q(P)?
Этот пример кода кажется недействительным (касается грамматики).
Я не могу понять статический Q(P) в примере кода ниже: [code]typedef int P(); typedef int Q(); class X { static P(Q); // define Q to be a P. // equivalent to `static int Q()` // the parentheses around Q are redundant
// Q is no longer a type in this scope
static Q(P); // define Q to be a function // taking an argument of type P // and returning an int. // equivalent to `static int Q(int())` } [/code] ИМО, «Q больше не является типом в этой области» означает, что Q теперь является именем функции, так почему его можно использовать как статический Q(P)? Этот пример кода кажется недействительным (касается грамматики).
Я не могу понять статический Q(P) в примере кода ниже:
typedef int P();
typedef int Q();
class X {
static P(Q); // define Q to be a P.
// equivalent to `static int Q()`
// the parentheses around Q are redundant
Я не могу понять статический Q(P) в примере кода ниже:
typedef int P();
typedef int Q();
class X {
static P(Q); // define Q to be a P.
// equivalent to `static int Q()`
// the parentheses around Q are redundant
В основном заголовок; Я наткнулся на код C++, который имел long long typedef LL; вместо того, что все ожидали, что-то вроде typedef long long LL;. Это волшебным образом сработало!
Я никогда не видел никакой документации по этому поводу и понятия...