假设我不喜欢static_cast
运算符的名称,并且想将其包装在具有不同名称的函数中,例如fancy_static_cast
但完美地保留语义。我该怎么做?更具体地说static_cast
,是通过价值还是通过引用接受它的论点?还是取决于参数表达式?我应该提供几个重载还是这样的东西可以解决问题?
template <typename To, typename From>
To fancy_static_cast(From&& from)
{
return static_cast<To>(std::forward<From>(from));
}