关于自动类型推导,哪一个是正确的
Which one is correct about the auto type deduction?
我对模板类型推导有点困惑。但当涉及到自动时,它会变得更加令人困惑。我希望我试图提供的例子能总结我的困惑。
std::unordered_map<std::string, int> _m;
//.......
for(auto _pair : _m)
{
// do stuff
{
现在通常地图的每个元素都是
std::pair<const std::string, int>
我的问题是,我在for循环中编写的代码对auto推导的类型有影响吗?编译器是否试图找到一种方法来匹配循环中的代码和自动推导?
auto
完全在初始化值的代码上下文中确定,而不是在后续使用中确定。试图根据任意数量的后续代码推断出几种可能的替代类型中的一种,将导致类型删除器的复杂性实际上是无限的。
这就是为什么像GMP的"表达式类型"(用于避免在赋值之前计算值,而后续的数学运算可能会导致更有效的解决方案)这样的巧妙技巧在类型推导中无法正常工作的原因;将auto
与它们一起使用将尝试存储中间表达式,而不是已实现的mpz_class
等,即使后续代码需要已实现的类型。
相关文章:
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 替换密码:哪一个?
- For-loop或std::any_of,我应该使用哪一个?
- 哪一个是最好的方法类或结构?在 C++ 中
- 静态常量与常量局部变量,哪一个性能更好
- 一个互斥锁与多个互斥锁.哪一个更适合线程池?
- cv::String 和 std::string:何时使用哪一个以及必须同时使用两者?
- 哪一个对物体检测更快?
- 哪一个更适合存储字符、矢量<char>或字符串?
- Visual C++ 和 gcc 之间从 std::isblank 返回不一致.哪一个错了
- 在 C 和 C++ 编程中使用哪一个更好?
- 这两者中的哪一个是实现标头的正确方法
- 带大小参数和不带大小参数的"运算符删除":当两者都可用时,选择哪一个?
- C++编译器在封装行为上存在分歧 - 哪一个做对了?
- 对于初学者来说,我应该学习" c or c++ "之间的哪一个才能使用Arduino UNO?
- MongoC ++驱动程序BSON构造:基于流与基于字符串解析.哪一个性能更好?
- 这些指针中的哪一个需要免费()或delete()
- 关于自动类型推导,哪一个是正确的
- 哪一个更好,自动&&,自动或自动常量