Правильно ли, что существует некоторая двусмысленность относительно того, когда операторы равенства с указателями являются UB?
Нет, потому что этот отрывок из п. 6.5.9 (3):
Операторы
blockquote>==
и!=
аналогичны реляционным операторам, за исключением их более низкого приоритета.Предполагает, что из раздела 6.5.9 (6) также применяется к Операторы равенства:
При сравнении двух указателей [...] Во всех остальных случаях поведение не определено.
blockquote>Если нет двусмысленности, когда точное сравнение указателей с операторами равенства будет UB?
Существует неопределенное поведение во всех случаях, для которых стандарт явно не определяет поведение.
Всегда ли UB, если at
§6.3.2.3 (5):
Целое число может быть преобразовано в любой тип указателя. За исключением, как указано ранее, результат определяется реализацией, может быть неправильно выровнен, может не указывать на объект ссылочного типа и может быть ловушечным представлением.
blockquote>Что делать, если один указатель ссылается на память, которая была
free
d?§6.2.4 (2):
Значение указателя становится неопределенным, когда объект, на который он указывает достигает конца своего времени жизни.
blockquote>можно сделать вывод, что никогда не существует UB в том смысле, что все «другие» сравнения должны давать false?
No. Стандарт определяет, при каких условиях два указателя должны сравнивать равные, и при каких условиях два указателя должны сравнивать не равные. Любое сравнение равенств между двумя указателями, которые выходят за пределы обоих этих двух наборов условий, вызывает неопределенное поведение.
Действительно ли в §6.5.9 (6) означает, что сравнение равенства бессмысленных, но поразрядных равных указателей всегда должно быть ложным ?
Нет, он не определен.
Я никогда не использовал это, и я не знаю, правильна ли следующая реализация. Я думаю, это может быть улучшено с большим отрывом.
По сути, из того, что я понимаю, по умолчанию поведение при установке фильтра заключается в проверке, существует ли это значение в данных.
Но в вашем случае вы хотите проверить различные столбцы и выполнить «множественный» фильтр.
вам нужно предоставить собственную функцию filterPredicate и обработать там свой фильтр