Skip to content

Commit

Permalink
Do not use [[nodiscard]] attribute on compiler not supporting it.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mgautierfr committed Oct 16, 2023
1 parent 4425cd2 commit ba45a59
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion include/library.h
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand All @@ -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();
Expand Down Expand Up @@ -408,6 +419,10 @@ class Library: public std::enable_shared_from_this<Library>
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


}

Expand Down

0 comments on commit ba45a59

Please sign in to comment.