2015-02-09 44 views
3

我希望有一个类似于boost::any但具有更多限制类型集的类型。类似这样的:boost ::任何有限类型的支持

limited_any<int,long,string> x; // x is like boost::any but is guaranteed to contain only an int, a long, or a string 

你会如何推荐实现这个? (无论是我自己还是使用现有的解决方案)

+4

你可以看看'boost :: variant'是如何做到的。虽然'boost :: any'与C的'void *'是类型安全的,'boost :: variant'更类似于C的'union'。 – 2015-02-09 15:30:05

回答

10

您正在寻找boost::variant

+1

@tohava请注意,有一些差异。最大的实现差异是'any'是基于自由存储的,而'variant'是基于自动存储的。 (另外,'variant'具有比'any'更丰富的类型安全接口) – Yakk 2015-02-09 15:52:18