
From: Martin Bidlingmaier <Martin.Bidlingmaier@gmx.de>
I've written a new version of boost::any. It does not depend on rtti and uses a static integer value instead of std::type_info to store type information.
Please don't do this! unsigned int next_id() { static unsigned int previous_id = 0; //0 is not assigned to a type ++previous_id; return previous_id; } But what is even more horrible that it would not work on DLL platform without making Boost.Any non-header only library: Example: /tmp/any$ cat dll.cpp #include "any.hpp" __declspec(dllexport) boost::proposal::any get_int() { boost::proposal::any a = int(10); return a; } /tmp/any$ cat main.cpp #include "any.hpp" #include <iostream> __declspec(dllimport) boost::proposal::any get_int(); int main() { boost::proposal::any d=double(3.14); boost::proposal::any i=get_int(); try { std::cout << boost::proposal::any_cast<double>(d) << std::endl; std::cout << boost::proposal::any_cast<int>(i) << std::endl; } catch(std::exception const &e) { std::cerr << e.what() << std::endl; } } /tmp/any$ wine ./a.exe 3.14 boost::bad_any_cast: failed conversion using boost::any_cast And you can't solve this without making any compiled library... So please.... -------------------- Do not reinvent RTTI -------------------- Best, Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.sf.net/ CppDB - C++ SQL Connectivity: http://cppcms.sf.net/sql/cppdb/