này hoạt động ...Sử dụng decltype và std :: chức năng với lambda
auto x = 4;
typedef decltype(x) x_t;
x_t y = 5;
... vậy tại sao không này?
int j = 4;
auto func = [&] (int i) { cout << "Hello: i=" << i << " j=" << j << endl;};
typedef decltype(func) lambda_t;
lambda_t func2 = [&] (int i) { cout << "Bye: i=" << i << " j=" << j << endl;};
... và cách tôi khai báo lambda_t
theo cách thủ công sử dụng std :: function?
Bạn chắc chắn có thể nhập lambdas với decltype như thế. –
@ R.MartinhoFernandes đặt câu hỏi tại sao 'decltype (func)' không trả về 'std :: function' thay vì một số rác không sử dụng được? –
learnvst
@learnvst: Tại sao phải không? 'decltype' trả về kiểu khai báo, và một lambda là * không * một' std :: function'. Ngoài ra, 'std :: function' có hàm ý hiệu suất trong số những thứ khác, nhờ vào kiểu xóa. – Xeo