0

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

1 に答える 1

0

static_cast 演算子の名前が気に入らず、それを別の名前の関数にラップしたいとします。たとえば、fancy_static_cast としますが、セマンティクスは完全に保持します。どうすればいいですか?

すべきではありません。

代わりに、あなたが意味するときに言い ます。そうしないと、保守性の欠如しか達成できません。コードの読者は、最初は を認識せず、関数を見たときに、なぜこれを行ったのか理解できず、そうしていることに気付くためだけに頭脳を浪費します。本質的に何もありません。static_cast static_caststatic_cast

コードを明確かつ鮮明にします。言いたいことを言いますが、派手すぎて読者 (自分自身を含む) を惑わさないでください。誤解を招くような名前を使用しないでください。代わりに、誰もが心から知っている言語の部分を使用するようにしてください。あなたが書いたことを誤解する機会をできるだけ少なくしてください。

于 2013-06-17T11:46:08.280 に答える