在C++11中,在编译时或运行时自动推导类型
Does auto deduce types in compile time or run time in C++11?
我在谷歌上搜索并在stackoverflow C++11中找到了一个自动编译时或运行时的解决方案?。这是一个重复,但不是完全,答案说有编译时间。它真的是编译时吗?让我们考虑下面的例子。
auto give_something(bool mybool)
{
if (mybool)
return string("auto");
return 6.66f;
}
int main()
{
bool mybool = (rand() % 2) ? true : false;
auto x = give_something(mybool); // how type of x is deduced?
return 0;
}
在编译时,无法推导出x
的类型和give_something
的返回类型(我的假设)。它只能在运行时推导出来。那么auto
编译时还是运行时呢?
auto
在编译时工作。
give_something
的返回类型不能在编译时推导出来,这是正确的。在这种情况下,您的代码将不会编译。Clang为您的示例提供了以下错误消息:
main.cpp:8:5: error: 'auto' in return type deduced as 'float' here but deduced
as 'std::__cxx11::basic_string<char>' in earlier return
statement
return 6.66f;
相关文章:
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 通过switch和static_cast访问多态对象的运行时类型
- 值到类型的运行时映射
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 运行时如何在运行时推断类型?
- 在运行时检查继承是否只有一种类型和 void*
- 运行时错误:引用绑定到类型为"int"的空指针
- 无法将运行时类绑定到 XAML T 必须是 WinRT 类型
- 在 C++ 中运行时调用模板时,是否可以切换模板的参数类型?
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 在运行时选择类成员的类型
- CPP 数据类型运行时溢出
- 类型不可知的抽象以使用相同的运行时接口处理正向和反向迭代器和范围?
- 只知道运行时的数据类型.如何将数据详细信息隐藏到使用它们的其他类
- 运行时错误:有符号整数溢出:964632435 * 10 无法在类型 'int' 中表示
- 非类型引用参数可以在运行时修改,这是否意味着模板可以在运行时实例化?
- 静态类型是在编译时还是运行时强制实施的?
- 根据运行时提供的类型执行模板函数
- 如何在void*指针下检查运行时类型(允许简单类型,没有基类)?
- 由于数据类型在运行时变化而卡在设计上