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_cast。否则你只会缺乏可维护性:你的代码的读者一开始不会认出static_cast.基本上什么都没有。

代码清晰明了。说出你的意思,不要用过分的花哨来欺骗读者(包括你自己)。不要使用误导性的命名,而是尝试使用每个人都熟记的语言部分。尽可能少给自己和他人误解你所写内容的机会。

于 2013-06-17T11:46:08.280 回答