Пересылка аргументов static_cast

Предположим, мне не нравится имя 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));
}

0

Решение

Предположим, мне не нравится имя оператора static_cast, и я хочу обернуть его в функцию с другим именем, скажем, fancy_static_cast, но прекрасно сохраняющую семантику. Как я должен это делать?

Ты не должен.

Вместо этого вы сказать static_cast когда ты имею в виду static_cast, В противном случае вы достигнете только недостатка в поддержке: читатели вашего кода сначала не распознают static_castи когда они смотрят на функцию, они не понимают, почему, черт возьми, вы это сделали, и тратите мозги, просто чтобы понять, что вы по сути ничего не делаете.

Будьте ясны и четки с вашим кодом. Скажите, что вы имеете в виду, не вводите читателей в заблуждение (включая вас самих) чрезмерной фантазией. Не используйте вводящие в заблуждение названия, вместо этого попробуйте использовать части языка, которые все знают наизусть. Предоставьте себе и другим как можно меньше возможностей неправильно понять, что вы написали.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]