// { dg-do compile { target c++11 } }
#include <type_traits>
class S {
  operator int();
  friend void g(); // #1
};
void
g()
{
  int i = 0;
  S s;
  i = s; // this works, because we're inside a friend.
  // But the traits are evaluated in "a context unrelated to either type".
  static_assert( ! std::is_assignable<int&, S>::value, "unfriendly");
#if __cplusplus >= 201703L
  static_assert( ! std::is_assignable_v<int&, S>, "unfriendly");
#endif
}