Sto cercando di dichiarare il tipo di un puntatore di funzione "C" extern. È una variabile membro. La sintassi in this question Non riesco a ottenere la compilazione.Come dichiarare un membro come puntatore a una funzione "C" esterna?
template<typename Sig> struct extern_c_fp {
extern "C" typedef typename std::add_pointer<Sig>::type func_ptr_type;
};
Ho sperimentato con dell'immissione extern "C"
ad entrambe le estremità, e tra typedef
e typename
e tra type
e func_ptr_type
, ma il compilatore respinto tutti. Eventuali suggerimenti?
Con i modelli di alias "extern" C ", funzionerebbe. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1463 –
BTW Hai bisogno di 'Sig' per essere" extern "C" '. L'aggiunta del puntatore al tipo di funzione non ha il collegamento. È il tipo di funzione stesso. Si induce il collegamento quando si forma il tipo di funzione. Non quando si nomina un tipo di funzione esistente - quel tipo esistente ha il collegamento che ha. –
http://liveworkspace.org/code/768027ef00bb0a31e76d8d856ac50801 Si lamenta di meno, ma è ancora problematico. – Puppy