static_cast <primitive_type>(foo)和primitive_type(foo)之间的区别

Dav*_*own 10 c++

可能重复:
常规强制转换与static_cast对比dynamic_cast
在C++中,为什么要使用static_cast <int>(x)而不是(int)x?

static_cast<float>(foo)和之间有什么区别float(foo)?我经常static_cast<float>在模板代码中看到或类似于从任何整数类型到某些特定的整数类型.例如,我想要一个函数在任何整数类型上执行浮点除法.我通常会看到这样的事情:

template <typename T>
float float_div(T lhs, T rhs)
{
    // I normally see this
    return static_cast<float>(lhs) / static_cast<float>(rhs);

    // But I could do this
    // return float(lhs) / float(rhs); // But I could do this
}
Run Code Online (Sandbox Code Playgroud)

使用float(lhs)或有任何优势static_cast<float>(lhs)吗?还有什么是float(lhs)初始化/转换的名称?