Tôi muốn lưu trữ một tham chiếu đến đối tượng trong đối tượng boost::any
. Làm thế nào để khởi tạo boost :: bất kỳ đối tượng nào? Tôi đã thử std::ref()
, nhưng boost::any
được khởi tạo với std::reference_wrapper<>
. Ví dụ, sau đâyLàm cách nào để tôi khởi tạo tăng :: bất kỳ tham chiếu nào đến một đối tượng?
#include <boost/any.hpp>
#include <cxxabi.h>
#include <iostream>
int main(void)
{
int s;
int i = 0;
boost::any x(std::ref(i));
std::cout << abi::__cxa_demangle(x.type().name(), 0, 0, &s) << "\n";
return 0;
}
in
std::reference_wrapper<int>
Tôi muốn boost::any
chứa int&
để thay thế.
Ngoài ra, không có type_info cho loại tham chiếu, thay vào đó type_info cho loại đang được tham chiếu được lấy 'cout << typeid (int) .name() <<" \ t "<< typeid (int &). name() << "\ t" << typeid (int) == typeid (int &) 'tạo' ii 1', vì vậy ngay cả khi bất kỳ đã lưu trữ một tham chiếu, kiểu của nó vẫn sẽ là 'typeid (int)' – stellarpower