Giả sử tôi cóSử dụng các loại chức năng trong std :: chức năng để khai báo nhiều chức năng của loại hình đó
typedef std::function<
double(
int,
long
)
> FooType;
và tôi muốn tuyên bố nguyên mẫu hàm cho một loạt các chức năng mà tôi có thể khe cắm vào một std::function
thuộc loại này. Tôi biết tôi có thể viết
double foo1(int, long);
double foo2(int, long);
vv, nhưng có cách nào tôi có thể sử dụng FooType
bằng cách nào đó khi khai báo nguyên mẫu hàm? Một cái gì đó như
FooType::type foo1, foo2;
Có lẽ tôi có thể phải sử dụng (*foo1)
hoặc tương tự? Đương nhiên trong việc thực hiện các chức năng tôi cần phải đánh vần nó ra tay dài vì vậy tôi có thể đưa vào một số thông số, nhưng viết nó như trên sẽ giữ cho tập tin tiêu đề của tôi sạch hơn.
[Full demo] (https://ideone.com/5JPguy) –
Và như thường lệ đối với một cái gì đó như thế này, nó có thể được đơn giản hóa với một mẫu bí danh: 'template sử dụng fn_sig_t = typename fn_sig :: type;' –
wow tuyệt vời ... C++ đang trở nên kỳ lạ và tràn ngập hơn –