Я бы хотел перегрузить operator&&
а также operator||
в пользовательском классе, и я бы хотел, чтобы перегруженные операторы подчинялись короткому замыканию своих собственных аналогов.
Я знаю, что в языке c ++ нет механизма для этого, но мне интересно, возможно, у gcc есть какое-то расширение, которое сделало бы это возможным. Я знаю, что такое расширение может привести к нарушению gcc официального стандарта c ++, но я вижу отказ от ответственности на документация gcc что читает «По умолчанию GCC также предоставляет некоторые дополнительные расширения языка C ++, которые в редких случаях конфликтуют со стандартом C ++.«, поэтому не кажется странным спрашивать.
Если есть фундаментальная причина, по которой такое расширение просто не может работать, даже теоретически, это также было бы полезно знать в образовательных целях. Мне кажется, что short_circuit_inline
ключевое слово, которое можно использовать в качестве замены для inline
будет иметь четко определенный смысл и прямую реализацию, но, возможно, я ошибаюсь.
Для чего это стоит, у меня в настоящее время есть обходной путь макросов, AND(x,y,...,z)
что делает короткозамкнутым x && y && ... && z
для экземпляров моего пользовательского класса. Мое желание к операторам в какой-то степени только для косметических целей.
Ответ — нет». Все расширения gcc C ++ описаны здесь: https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html. Там нет перечисленных расширений, которые работают так, как вы описали.
Других решений пока нет …