int main() { int x = 1, y = 3; void (*funcpoint)(int&, int&); funcpoint = &swap; swap(a, b); std::cout << a << ' ' << b << endl; (*funcpoint)(a, b); std::cout << a << ' ' << b << endl; } Outputs: 3 1 1 3