std::tr1::_Bind<void (*()(std::tr1::reference_wrapper<int>))(int&)>
Tôi hiểu std::tr1::reference_wrapper<int>
và toàn bộ điều này là một số loại hàm con trỏ trả về void
và mất int&
làm đối số. Nhưng tôi dường như không thể theo dõi số *() ngay từ đầu. Mã được cắt dán từ một số phiên gdb tôi đã trải qua một thời gian trở lại.Loại trong mẫu này là gì?
Ngoài ra, loại hàm tr1 :: là gì? Một số hàm trả về void và không có đối số?
0x00000001000021a1 in std::tr1::function<void()()>::operator() (this=0x7fff5fbffb98) at functional_iterate.h:865
Nhưng rồi sau đây là một lỗi:
template <typename T>
void f()
{
cout << "general\n";
}
template<>
void f<void()()>() // this is error
{
cout << "specific\n";
}
nên không phải là ngôi sao được giữa hai ngoặc cho điều đó? – 6502
@ 6502: Không, bởi vì ngôi sao thuộc về * kiểu trả về * của hàm (chính nó là một hàm, và đối với hàm * * đó, ngôi sao thực sự nằm trong dấu ngoặc đơn tương ứng. – celtschk
@ Fanatic23: Tôi đã trong quá trình viết điều đó lên. Nó chỉ mất một thời gian. – celtschk