#include <iostream>
using namespace std;

float foo2(float& i)
{
    cout << "call from reference" << endl;
    return i;
}
float foo2(float i)
{
    cout << "call from non reference"<<endl;
    return i;
}

typedef float (*fptr)(float&);

int main()
{
    cout<<foo2(2) << endl; // print "call from non reference"
    fptr foo2ptr(foo2);
    float n = 10;
    cout<<foo2ptr(n) << endl;
}