атрибуты — конструкторы класса C ++, квалифицированные как __attribute __ ((pure)) или __attribute __ ((const))

Можно и нужно объявлять конструкторы класса C ++ __attribute__((pure)) если они только могут получить данные через его параметры? И в каких случаях они должны быть квалифицированы как __attribute__((const))?

2

Решение

GCC предупреждает, когда вы квалифицируете конструкторов как pure или же const, Это потому, что конструктор ничего не возвращает (возвращает void) и не имеет особого смысла иметь pure или же const атрибуты на такие функции.

Посмотреть демоверсию Godbolt Вот.

<source>:3:30: warning: 'pure' attribute on function returning 'void' [-Wattributes]
A()  __attribute__((pure));

^
<source>:8:31: warning: 'const' attribute on function returning 'void' [-Wattributes]
B()  __attribute__((const));                               ^

От GCC документация:

Const

Поскольку у const-функции не может быть никаких побочных эффектов, для такой функции не имеет смысла возвращать void. Объявление такой функции диагностируется.

чистый

Поскольку чистая функция не может иметь никаких побочных эффектов, для такой функции не имеет смысла возвращать void. Объявление такой функции диагностируется.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]