действительно имеет смысл

чание: Чтобы уточнить, вопрос не об использованииrestrict ключевое слово в целом, но конкретно о применении его к функциям-членам, как описаноВот.

GCC позволяет использовать__restrict__ (GNU ++ эквивалент C99restrict) классификатор на функцию-член, эффективно делаяthis ограниченный квалифицированный указатель в области действия функции. Где говядина?

Большинство функций-членов работают с другими участниками, получая к ним доступ черезthis, который являетсяT* const (и обычно не сглаженный). Заthis чтобы быть псевдонимом, должен быть второй указатель на тип, используемый как-то внутри функции-члена, и он должен был прийти откуда-то.
Это ситуация, которая обычно имеет место с функциями, не являющимися членами, такими как, например, все бинарные операторы или любая другая свободная функция, которая принимает как минимум два указателя или ссылки идентичного, нетривиального типа. Однако эти функции не имеютthisтак что они не актуальны.

Оператор присваивания, конструктор копирования и унарные операторы сравнения являются примерами функций-членов, гдеthis мог в принципе быть псевдонимом (поскольку другой объект передается по ссылке). Так что на самом деле имеет смысл присваивать им ограничивающий квалификатор - для компилятора уже должно быть очевидно, что все остальные функции в любом случае имеют свойство restrict (потому что никогда не бывает второго указателя на T).

Теперь, если, например, вы использовалиrestrict наoperator= вам следуетпоследовательно не проверять самопредставление, потому что вы говорите, чтоthis не псевдоним в рамках этой функции (иесли это правда, самоотдача не может произойти).
Очевидно, что это то, что вы не можете знать заранее, и это тоже не имеет смысла.

Итак, что было бы в случае, когда на самом деле хотелось бы дать функции-члену ограничительный квалификатор и где это имеет смысл?

Ответы на вопрос(1)

Ваш ответ на вопрос