#include <iostream>
#include <functional>

int foo( int n, std::function< void(int) > notify )
{
    int sum = 0 ;
	for( int i = 1 ; i < n ; ++i )
	{
		sum += i*i ;
		notify(sum) ;
	}
	return sum ;
}

int main()
{
    const auto report_progress = [] ( int s )
            { std::cout << "intermediate value returned: " << s << '\n' ; };
    foo( 10, report_progress ) ;
}
