#include <iostream>
using namespace std;
void f(int a=1); // forward declaration with a default value for the compilation unit
void f(int a) // definition
{
cout<<a<<endl;
}
void g() {
void f(int a=2); // declaration in the scope of g
f();
}
int main() {
f(); // uses general default => 1
g(); // uses default defined in g => 2
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBmKGludCBhPTEpOyAgICAgLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNvbXBpbGF0aW9uIHVuaXQKdm9pZCBmKGludCBhKSAgICAgICAgLy8gZGVmaW5pdGlvbiAKewoJY291dDw8YTw8ZW5kbDsgCn0Kdm9pZCBnKCkgewoJdm9pZCBmKGludCBhPTIpOyAgLy8gZGVjbGFyYXRpb24gaW4gdGhlIHNjb3BlIG9mIGcKCWYoKTsKfQppbnQgbWFpbigpIHsKCWYoKTsJCQkvLyB1c2VzIGdlbmVyYWwgZGVmYXVsdCA9PiAxCglnKCk7CQkJLy8gdXNlcyBkZWZhdWx0IGRlZmluZWQgaW4gZyA9PiAyCglyZXR1cm4gMDsKfQ==