Max
Возможно. Я уже отучился так писать и других по руках бью на рев"ю.
Max
Я вот в принципе не понимаю, зачем bool к float переводить. Уже лучше так
float x = bool_val ? 1.0 : 0.0;
Max
... и даже тогда он не имеет смысла :)
Anonymous
float(bool_val), дайте мне стикер с всратым винни пухом.
Berkus
Aidar
Интересно как должен выглядеть реинтерпреткаст это штуки
Max
нет, не вызовется
Кхм-кхм.
1) When the C-style cast expression is encountered, the compiler attempts to interpret it as the following cast expressions, in this order:
a) const_cast<new_type>(expression);
b) static_cast<new_type>(expression), with extensions: pointer or reference to a derived class is additionally allowed to be cast to pointer or reference to unambiguous base class (and vice versa) even if the base class is inaccessible (that is, this cast ignores the private inheritance specifier). Same applies to casting pointer to member to pointer to member of unambiguous non-virtual base;
c) static_cast (with extensions) followed by const_cast;
d) reinterpret_cast<new_type>(expression);
e) reinterpret_cast followed by const_cast.
The first choice that satisfies the requirements of the respective cast operator is selected, even if it cannot be compiled (see example). If the cast can be interpreted in more than one way as static_cast followed by a const_cast, it cannot be compiled.
In addition, C-style cast notation is allowed to cast from, to, and between pointers to incomplete class type. If both expression and new_type are pointers to incomplete class types, it's unspecified whether static_cast or reinterpret_cast gets selected.
Max
Aidar
Ну это статиккаст
Max
Так что шанс на то, что будет вызван именно reinterpret_cast существует.
kitsu
ну последовательность то явна задана, так что определенно статик
Max
Ну это статиккаст
Это порядок действий, когда ты кастуешь С-шным способом неявно, вот как float(bool) например
Max
Matwey
https://godbolt.org/g/JkyUWc
Matwey
static_cast короче получается
Aidar
kitsu
Max
В этом главная причина писать явно, который каст ты хочешь.
В этом может и нет, но в конечном итоге все зависит от компилятора.
Matwey
Так что предлагаю продолжать писать static_cast<float>(bool_val)
Matwey
меньше инструкций и литерал хранить не нужно
Matwey
и условных переходов нет!
Aidar
Статик каст же статичен
Matwey
а если серьезно, почему оптимизатор не сообразил что происходит в тернарном операторе?
Matwey
А динамик - динамичен
Matwey
Да\
Matwey
А в чем вопрос?
Matwey
Я вон ссылку кинул на годболт
Max
Matwey
Matwey
А вместо этого есть поход за литералом, который в памяти находится хрен знает где
Constantine
Constantine
вот так догадается clang
Matwey
Matwey
а то у тебя тут неявный каст из инта во флоат
Constantine
https://godbolt.org/g/XeCNJb
вот это забавно
Constantine
надо еще довешивать разрешения floating point оптимизаций, видимо
Constantine
я что-то не знаю?
Constantine
// Note: “for (auto& x : f().items())” is WRONG
почему?
Constantine
> std::vector<int>& items()
Constantine
ладно ок
Aidar
лол
Aidar
размер не важен
Aidar
о да
Aidar
ато щас анально привязано к ситайму
🙃
>Boost на работе запрещён
Aidar
ну а 16битный флоат тоже нужен давно
🙃
Тяжко же вам жить там
Aidar
лучше всетаки wide_float
Aidar
<>
🙃
Ну хотя если последние стандартны разрешены - может без буста и можно
🙃
У нас выше С++11 пока нельзя
🙃
причём разрешили только в прошлом году
🙃
И то, не везде С++11 можно применять, куча заказчиков которые хотят компилять некрокомпилятором под windows CE, и некоторые либы приходится держать на более старом стандарте
🙃
Ну это круто, у нас так нельзя :)
🙃
мы типа либы продаём, и приходится держать их в состоянии возможном для линковки некрокомпилятором
Max
Matwey
Max
>И так как код не легаси
Есть вакансии? 😒
🙃
Matwey
Да
Интересно, можно ли сделать под капотом C++11, а интерфейс C++03?
Max
Львов
Matwey
а в Украине?
Matwey
🙃
и из буста всё
Matwey
ну ваша библиотека же потащит стандартную библиотеку в зависимостях
Matwey
?
🙃
Ну да
🙃
так мы компиляем кучей разных компиляторов для разных заказчиков
🙃
там чуть ли не отдельный компилятор для каждого заказчика
🙃
Ну да, хоть с этим у нас проблем нет