class Foo {
 public:
  explicit Foo(int x) : x_(x) { }
  int x_;
};

int Bar(Foo f) {
  return f.x_;
}

int main(int argc, char **argv) {
  // The compiler uses Foo's (int x) constructor
  // to make an implicit conversion from the int 5
  // to a Foo.
  return Bar(5);  // compiler error!
}