題のような関数の宣言は、標準C++では禁止されているが、
現ヴァージョンのGCCでは、以下のような抜け道がある。
template
struct bar
{
static void baz(X* x);
};
extern "C" __typeof__(bar>::baz) foo; // 関数 void foo(int(*))の宣言
ただし、これがGCCのバグなのか、そうでないのかは不明である。
あ〜〜 もっと簡単に書けたな。
template
struct bar
{
typedef R func_type(A*);
};
extern "C" bar::func_type foo;