
* Do you deem the lib worth eventually proposing to Boost?
Yes!
* Do you like the usage interface?
Very much... However, as i will like it even more if the principal class name were easier to write, I am not a native English speaker and the ht, th kills me :) What about something like Boost.Flyweight / boost::flyweight / fw ? The code is cleaner this way.
* Are you OK with the design concepts, in particular with the concepts around factories and holders?
This is one of the strong point of the library. This makes it very flexible. I like the design a lot.
* Have you been able to use it?
Yes, with Linux/gcc4, no problems...
* Improvements/extensions?
I think that one nice thing to have is the ability to interact directly with the factories. I would like to be able, at least for debugging purpose but I have in mind some other scenarios, to write something like: struct names {}; struct user { flyweight< std::string, tag<names>, set_factory > name; int age; }; flyweight_factory< names >::instance().insert( "Joaquin" ); flyweight_factory< names >::instance().insert( "Penelope" ); ... ... std::for_each( flyweight_factory< names >::instance().begin(), flyweight_factory< names >::instance().end(), std::ostream_inserter< std::string >( cout ) ); If I have this feature I will be able to use a flyweight to create a translation table for my program. I simple defined a map from English to "other language" phrases bindings (pb) and uses it as my assoc_container_factory. (some details maybe need to be tunned but the idea is simple) I can now write: struct translations {}; typedef flyweight < std::string, tag< translations >, assoc_container_factory< tunned_map<std::string,std::string> >
tr;
... fileMenu.set_text( "File" ); // set_text takes a tr object ... void ChangeLanguageToSpanish() { flyweight_factory< translations >::instance()[ "File" ] = "Archivo"; ... }; Is this possible? Thanks for yet another great library! Best regards Matias Capeletto