#include <iostream>
using std::cout;
using std::endl;
void OneParam(int);
void TwoParams(int, int=666);
void A() {
//The following is an error...
//OneParam();
TwoParams(999); //calls TwoParams(999, 666)
}
void OneParam(int n = 666) {
cout << n << endl;
}
void TwoParams(int i=999, int j) { //lolwut? Default parameters have to be at the end!
cout << i << " " << j << endl;
}
void B() {
OneParam(); //calls OneParam(666)
TwoParams(); //calls TwoParams(999, 666)
}
int main() {
A();
B();
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OmVuZGw7Cgp2b2lkIE9uZVBhcmFtKGludCk7CnZvaWQgVHdvUGFyYW1zKGludCwgaW50PTY2Nik7Cgp2b2lkIEEoKSB7CiAgLy9UaGUgZm9sbG93aW5nIGlzIGFuIGVycm9yLi4uCiAgLy9PbmVQYXJhbSgpOwogIFR3b1BhcmFtcyg5OTkpOyAvL2NhbGxzIFR3b1BhcmFtcyg5OTksIDY2NikKfQoKdm9pZCBPbmVQYXJhbShpbnQgbiA9IDY2NikgewogICBjb3V0IDw8IG4gPDwgZW5kbDsKfQoKdm9pZCBUd29QYXJhbXMoaW50IGk9OTk5LCBpbnQgaikgeyAvL2xvbHd1dD8gRGVmYXVsdCBwYXJhbWV0ZXJzIGhhdmUgdG8gYmUgYXQgdGhlIGVuZCEKICAgY291dCA8PCBpIDw8ICIgIiA8PCBqIDw8IGVuZGw7Cn0KCnZvaWQgQigpIHsKICAgT25lUGFyYW0oKTsgLy9jYWxscyBPbmVQYXJhbSg2NjYpCiAgIFR3b1BhcmFtcygpOyAvL2NhbGxzIFR3b1BhcmFtcyg5OTksIDY2NikKfQoKaW50IG1haW4oKSB7CiAgIEEoKTsKICAgQigpOwp9Cg==