- 1
- 2
auto highPriority = static_cast<bool>(features(w)[5]);
// Тип features(w) - std::vector<bool>
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+4
auto highPriority = static_cast<bool>(features(w)[5]);
// Тип features(w) - std::vector<bool>
Скотт Майерс. Эффективный и современный С++.
inkanus-gray 10.07.2016 21:19 # +5
Soul_re@ver 10.07.2016 21:30 # +9
guesto 10.07.2016 21:54 # +7
питон
Dummy00001 11.07.2016 15:32 # +1
Antervis 10.07.2016 22:18 # +3
Soul_re@ver 10.07.2016 22:33 # 0
bormand 10.07.2016 22:46 # +1
Только перегрузка этого оператора - отличный шанс походить по граблям с приоритетами и неоднозначностями...
Sim_salapim 10.07.2016 22:49 # −2
bormand 10.07.2016 23:39 # +1
Antervis 11.07.2016 07:34 # +1
Dummy00001 11.07.2016 12:14 # +2
народ пишет что ambiguous/зависит от конпелятора/зависит от констности/зависит от типов и от хез какой еще лабуды. вообщем: как обычно, в крестах.
http://stackoverflow.com/questions/1384007/conversion-constructor-vs-conversion-operator-precedence
http://stackoverflow.com/questions/1051379/is-there-a-difference-in-c-between-copy-initialization-and-direct-initializati/
Soul_re@ver 10.07.2016 23:34 # +5
Национальный спорт крестовиков.
bormand 10.07.2016 23:40 # +4
Dummy00001 11.07.2016 12:31 # +2
жаба это однозначно футбол (25 мужиков долго бегают за одним мячом, "но с ооочень глууубокой стратегией", результат 1:0, и все в восторге!)
перл это регби/американский футбол - there can never be enough brute force.
питон это бейсбол: бегание по кругу + long shot.
3oJloTou_xyu 11.07.2016 13:16 # +4
Ruby - настольный пеннис
Assembler - Шахбокс
3_dar 11.07.2016 20:06 # +3
bormand 11.07.2016 20:20 # +3
Antervis 11.07.2016 07:33 # 0
Поэтому проще задать список имплисит преобразований вручную. А еще лучше пользоваться этой фичей только для врапперов и делать максимум одну-две версии перегрузки (const/non-const)
th1s 11.07.2016 08:58 # 0
scott meyers effective modern c++. item 6 p. 43.
Antervis 11.07.2016 09:59 # 0
th1s 11.07.2016 10:41 # 0
Antervis 11.07.2016 11:30 # 0
А с явным static_castom всё правильно выводится
Soul_re@ver 11.07.2016 11:35 # +5
bool highPriority = features(w)[5];
TarasB 11.07.2016 11:44 # +8
gost 11.07.2016 11:56 # +5
Вот не понимаю я таких кадров. Ладно бы ещё там был какой-нибудь std::map<std::string, std::vector<std::pair<bool, std::queue<std::string>>>>, а то ведь 4 буквы написать лень! И то, auto и static_cast - не лень.
Antervis 11.07.2016 15:47 # +3
Вот в выражении типа MyClass *ptr = dynamic_cast<MyClass>(expr()); по факту лучше использовать auto, т.к. иначе идет дублирование. Но это же явное преобразование.
Antervis 11.07.2016 13:58 # 0
kurwa-nextgen 11.07.2016 21:01 # 0
gost 11.07.2016 23:48 # 0
Но ведь это и есть bool.
>>> Тип features(w) - std::vector<bool>
Soul_re@ver 11.07.2016 23:56 # 0
features(w)[5] вернёт прокси-объект, который содержит ссылку на бит в векторе и неявно конвертируется в бул. Из-за такой хуйни использовать его с авто опасно. И не счесть людей, которые сделали const bool& foo = ... и удивлялись, почему код не работает.
kurwa 12.07.2016 00:00 # 0
Soul_re@ver 12.07.2016 00:04 # 0
kurwa 12.07.2016 00:06 # +1
Soul_re@ver 12.07.2016 00:07 # 0
th1s 11.07.2016 12:01 # +1