在使用boost::any 和 boost::variant的過程中遇到幾個小問題,按個人理解對二者做了一下比較。令人最遺憾的是boost::any與boost::serialization 不兼容。 More...
boost::any
* 非模板類
這意味著即時是跨dll也可以方便地使用,支持無限種變量。
* boost::serialization
不支持。有人對此進行了激烈的討論,在這里。
boost::variant
* 模板類
由于模板參數的限制(支持的變量類型需要列在模板參數列表里),因而只支持有限種變量。
如果需要跨DLL使用,聲明處需要引用所有需要的變量
* 基于stack
這意味著對于動態創建的對象,內存需要自己管理。
* 支持boost::serialization
|
Boost::any |
Boost::variant |
是否模板類 |
否 |
是 |
基于stack |
是也不是 |
是 |
是否支持boost:: serialization |
否 |
是 |
















































