为什么左值转换有效?

Han*_*xan 4 c++ casting visual-studio-2010 lvalue assign

我今天第一次看到这样的演员阵容,我很好奇为什么会这样。我认为以这种方式进行选角会分配给临时成员,而不是班级成员。使用VC2010。

class A
{
public:

   A() :
      m_value(1.f)
   {
      ((float)m_value) = 10.f;
   }

   const float m_value;
};
Run Code Online (Sandbox Code Playgroud)

nvo*_*igt 5

即使修复了所有其他问题以使代码可以编译,它也只能在 VC2010 中运行,因为它使用了非标准扩展。如果您指定/Wall查看所有警告,编译器将发出

警告 C4213:使用非标准扩展:转换为左值