考虑:
typedef boost::variant<T0, ..., TN> variant_T_t;
typedef boost::variant<U0, ..., UN> variant_U_t;
...
typedef boost::variant<variant_T_t, variant_U_t, ...> variant_t;
Run Code Online (Sandbox Code Playgroud)
这将对我的类型可以保留的类型数量的限制扩展到pow(BOOST_VARIANT_LIMIT_TYPES, L),其中L是嵌套级别的数量。
这(在某种程度上)是可以接受的解决方案,还是只是一个不好的hack?有更好的解决方案吗?也许老式union的比较合适?
这是一个丑陋的黑客行为。它将使您的访问者或您的接听电话变得极其丑陋且难以阅读。
尝试只是增加限制 - Boost.Variant 将其定义为与 相同BOOST_MPL_LIMIT_LIST_SIZE,如果禁用预生成的标头(尽管这在编译时是一个打击),则可以覆盖它。
http://www.boost.org/doc/libs/1_53_0/libs/mpl/doc/refmanual/limit-list-size.html
为什么你需要这么多不同类型的东西?这听起来像是一个潜在的设计问题。
| 归档时间: |
|
| 查看次数: |
1472 次 |
| 最近记录: |