#include <iostream>
class A {
public:
A() : val(0) {};
A(int v) : val(v) {};
private:
int val;
};
void foo (const A&){}
main() {
int number;
A a; /* GOOD, object of type A, created without arguments */
A b(2); /* GOOD, object of type A, created with one argument */
//A c();
A(d); /* GOOD, object of type A again; no arguments */
foo(A(number)); // No problem - creates a temporary
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQSB7CgogIHB1YmxpYzoKICAgIEEoKSAgICAgIDogdmFsKDApIHt9OwogICAgQShpbnQgdikgOiB2YWwodikge307CgogIHByaXZhdGU6CiAgICBpbnQgdmFsOwp9OwoKdm9pZCBmb28gKGNvbnN0IEEmKXt9CgptYWluKCkgewoKICBpbnQgbnVtYmVyOwoKICBBIGE7ICAgICAgIC8qIEdPT0QsIG9iamVjdCBvZiB0eXBlIEEsIGNyZWF0ZWQgd2l0aG91dCBhcmd1bWVudHMgKi8KICBBIGIoMik7ICAgIC8qIEdPT0QsIG9iamVjdCBvZiB0eXBlIEEsIGNyZWF0ZWQgd2l0aCBvbmUgYXJndW1lbnQgKi8KICAvL0EgYygpOwogIEEoZCk7ICAgICAgLyogR09PRCwgb2JqZWN0IG9mIHR5cGUgQSBhZ2Fpbjsgbm8gYXJndW1lbnRzICovCiAgZm9vKEEobnVtYmVyKSk7IC8vIE5vIHByb2JsZW0gLSBjcmVhdGVzIGEgdGVtcG9yYXJ5Cn0=