2014-02-11 2 views
0

Можно ли однозначно сделать указатель функции typedef от соответствующей функции typedef?Создание указателя функции typedef из функции typedef в C++?

// Can I define fx_pt in terms of fx_t without duplicating the signature? 
// Does decltype allow for any new sort of trick here? 
using fx_t = char(int, char, std::vector<float> const &); 
using fxp_t = char(*)(int, char, std::vector<float> const &); 

// Using function typedef to enforce interface for declarations and definitions. 
fx_t foo, bar, baz; 
char foo(int) { /* ... */ } 

// Using fp typedef elsewhere as normal. 
fxp_t whatever{bar}; 
whatever(99); 

Я никогда не ожидал ничего о функции (указатель) ЬурейеЕ синтаксис, чтобы быть полностью интуитивно понятным для меня, но я не был в состоянии определить, является ли устранение дублирования кода возможно.

Это может связать в более серьезную проблему преобразования между классом/примитивными определениями типами и классом/примитивным указателем определениями типами, которые я помню слушание не являемся переносимыхами конвертируются между ...

ответ

5

Просто добавьте * к функции псевдонима

using fx_t = char(int, char, std::vector<float> const &); 
using fxp_t = fx_t*; 

Live demo

+0

+1 Лучше, чем моя. : D – 0x499602D2

+0

Вау, я идиот. Благодаря! – Jeff

+1

'std :: add_pointer' стоит упомянуть ИМХО, хотя он делает практически то же самое (http://en.cppreference.com/w/cpp/types/add_pointer) – zahir

Смежные вопросы