Можно и нужно объявлять конструкторы класса C ++ __attribute__((pure))
если они только могут получить данные через его параметры? И в каких случаях они должны быть квалифицированы как __attribute__((const))
?
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. Объявление такой функции диагностируется.
Других решений пока нет …