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! }