演算子の名前が気に入らず、セマンティクスを完全に保持しながら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));
}