boost::factory?