%module cpp11_constexpr_friend %rename("isEqual") operator==(FriendA const& lhs, FriendA const& rhs) noexcept; %rename("isEqual") operator==(FriendB const& lhs, FriendB const& rhs) noexcept; %inline %{ class FriendA final { public: FriendA(int const v) noexcept : _v(v) { } constexpr friend bool operator==(FriendA const& lhs, FriendA const& rhs) noexcept { return lhs._v == rhs._v; } private: int _v{}; }; class FriendB final { public: FriendB(int const v) noexcept : _v(v) { } constexpr friend bool operator==(FriendB const& lhs, FriendB const& rhs) noexcept { return lhs._v == rhs._v; } private: int _v{}; }; %}