Do not use `[[nodiscard]]` attribute on compiler not supporting it.

On aarch64, we use gcc version 6.3.0 which doesn't support the
`[[nodiscard]]` attribute
(see https://en.cppreference.com/w/cpp/compiler_support/17)

So don't set the attribute if the attribute is not present.
This commit is contained in:
Matthieu Gautier 2023-10-13 14:28:49 +02:00
parent da891699ac
commit 01aa190c38
1 changed files with 16 additions and 1 deletions

View File

@ -186,6 +186,17 @@ class MultiKeyCache;
using LibraryPtr = std::shared_ptr<Library>;
using ConstLibraryPtr = std::shared_ptr<const Library>;
// Some compiler we use don't have [[nodiscard]] attribute.
// We don't want to declare `create` with it in this case.
#define LIBKIWIX_NODISCARD
#if defined __has_cpp_attribute
#if __has_cpp_attribute (nodiscard)
#undef LIBKIWIX_NODISCARD
#define LIBKIWIX_NODISCARD [[nodiscard]]
#endif
#endif
/**
* A Library store several books.
*/
@ -201,7 +212,7 @@ class Library: public std::enable_shared_from_this<Library>
Library();
public:
[[nodiscard]] static LibraryPtr create() {
LIBKIWIX_NODISCARD static LibraryPtr create() {
return LibraryPtr(new Library());
}
~Library();
@ -408,6 +419,10 @@ private: //data
std::unique_ptr<Xapian::WritableDatabase> m_bookDB;
};
// We don't need it anymore and we don't want to polute any other potential usage
// of `LIBKIWIX_NODISCARD` token.
#undef LIBKIWIX_NODISCARD
}