自从 C++17 std::any
被引入。现在可以编写这样的代码
#include <iostream>
#include <any>
#include <string>
int main () {
const double d = 1.2;
std::any var = d;
const std::string str = "Hello World";
var = str;
}
一个 double 被分配给变量 var
并且一个 std::string
被分配给它。
为什么要引入 std::any
?
我认为这违反了最小惊讶规则
,因为我很难想出一种情况,它可以用来更清楚地表达我喜欢表达的东西。
当 std::any
有益时,有人能给我一个很好的例子吗?
最佳答案
何时使用
void*
作为一种极其不安全的模式,具有一些有限的用例,std::any
增加了类型安全,这就是它有一些实际用例的原因。
一些可能性:
- 在库中——当库类型必须在不知道
一组可用类型。
- 解析文件——如果你真的不能指定支持的是什么
类型。
- 消息传递。
- 与脚本语言的绑定(bind)。
- 为脚本语言实现解释器
- 用户界面 - 控件可能包含任何内容
- 编辑器中的实体
( ref )
关于c++ - 我什么时候应该使用 std::any,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59397808/