boost::function
几乎完全转移到了 std::function
,同样的情况也发生在 boost::shared_ptr
上。但是我找不到
std::any
?
它是否被重命名或由于某些原因根本没有放置在新标准中?boost::function
几乎完全转移到了 std::function
,同样的情况也发生在 boost::shared_ptr
上。std::any
?
它是否被重命名或由于某些原因根本没有放置在新标准中?自从这个问题被问出来后,我们已经向std :: experimental :: any迈进,作为C ++ 14标准投票通过的可选功能。
至少在GCC 5.1中,它被实现。
自那时起,该功能已在C ++ 17中标准化,导致std :: any 。另请参见C ++ 17的std :: variant ,用于类型安全的联合体,其中包含一种有限的已知类型替代方案,或为空(感谢remy-lebeau提供的提示)。
并非boost的每个库都能够进入标准库(即使成功被纳入的库中也可能会删除某些组件)。一般来说,当委员会考虑添加标准库内容时会非常保守(因为如果错误地将某个元素包含进去,那么很难在以后删除它,例如因为有更好的替代品)。
boost::function
和boost::shared_ptr
很有可能被包括在内,因为它们已经是tr1
的一部分了。但是,boost::any
没有被纳入标准库。然而,它可能会在以后的标准库中被包括进去(例如在下一个技术报告中,可以查看这里)。尽管拥有boost::any
很不错,但我不认为它像shared_ptr
那么重要。
总之:boost::any
不是C++11的一部分,因为委员会认为没有迫切需要将其包含进去
我认为默认情况下,除非提交并经过委员会通过,否则新标准中不会包含库。
我不确定boost::any是否被提交过。 可能没有。 但你仍然可以使用boost::any。
我的猜测是,在C ++11中,boost库将被重写,一些库可能会被视为冗余,而其他的则会改用移动语义、初始化列表和auto等C++11特性以C++11风格进行编写。
很可能新的库都是基于C++11的,但现有的boost软件包仍将作为可用状态保留一段时间,因为许多人尚未切换到C++11编译器。 我还猜测,只有所有主要编译器实现的C++11特性才会首先进入软件包。
这可能更适合程序员而不是stackoverflow,甚至更适合comp.std.c++.moderated和boost邮件列表。