int foo(int& x);
int main(){
int x;
return foo(x);
}
struct X{ int x; };
int foo(X* x);
int main(){
return foo(new X);
}
main:
sub rsp, 8
mov edi, 4
call operator new(unsigned long)
add rsp, 8
mov rdi, rax
jmp foo(X*)
main:
sub rsp, 24
lea rdi, [rsp+12]
call foo(int&)
add rsp, 24
ret
struct X{ int x; };
int foo(X* x);
int main(){
return foo(new X());
}
main:
sub rsp, 8
mov edi, 4
call operator new(unsigned long)
mov DWORD PTR [rax], 0
mov rdi, rax
add rsp, 8
jmp foo(X*)
int foo(int& x);
int main(){
int x{};
return foo(x);
}
main:
sub rsp, 24
lea rdi, [rsp+12]
mov DWORD PTR [rsp+12], 0
call foo(int&)
add rsp, 24
ret
int foo(int& x);
int x;
int main(){
return foo(x);
}
int main() {
std::vector<int> x{5};
std::cout << x.size() << '\n';
}
1
int main() {
std::vector<int> x(5);
std::cout << x.size() << '\n';
}
5
int main() {
std::vector<int> x{5, 2};
std::cout << x.size() << '\n';
}
2
struct Sub {
int x;
int y;
};
struct Agg{
Sub sub;
int z;
};
int main(){
Agg x{{1, 2}, 3};
return foo(x);
}
struct Sub {
int x;
int y;
};
struct Agg{
Sub sub;
int z;
};
int main(){
Agg x{1, 2, 3};
return foo(x);
}