Почему я получаю seg-ошибку при возврате справки от перегруженного оператора? [Дубликат]

Если вы уже установили правильную платформу Android SDK Platform Tools (Build Tool), и вы все равно получите сообщение об ошибке, попробуйте сделать недействительным кеш; Файл -> Недействительные кеши / Перезапуск ....

2
задан Michal Špondr 10 September 2014 в 16:54
поделиться

2 ответа

Есть ли способ получить ссылку на логическую переменную из std :: Vector?

No.

Или любой другой решение?

Вернуть typename std::vector<T>::reference вместо T&. Для bool он вернет тип прокси-объекта вектора;

Или специализируйте A<bool>, чтобы использовать что-то, кроме vector<bool>.

Или используйте какой-либо другой тип (возможно, char, или простой класс, обертывающий bool) вместо bool.

5
ответ дан Mike Seymour 24 August 2018 в 01:40
поделиться

Вы нажимаете проклятие специализации поддельного контейнера.

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

Используйте std::vector<mybool> с struct mybool{bool value;}; или некоторые из них по вашей специализации (и проклинайте упрямый комитет за то, что он не ускоряет его и не отменяет их ошибку).

В качестве альтернативы просто верните std::vector<T>::reference вместо T&. (Воздерживаться, если это возможно, не размножайте эту бородавку) (Не забудьте проклятие)

6
ответ дан Deduplicator 24 August 2018 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: