
#include <iostream>
#include <set>

template <typename C>
int insert_get_index(C& container, typename C::value_type value)
{
	typename C::iterator it = container.insert(value).first;
	return std::distance(container.begin(), it);
}

int main()
{
	int a = 3, b = 1, c = 9;
	std::set<int*> set;
	
	std::cout << insert_get_index(set, &a) << "\n";
	std::cout << insert_get_index(set, &b) << "\n";
	std::cout << insert_get_index(set, &c) << "\n";
	std::cout << insert_get_index(set, &a) << "\n";
	std::cout << insert_get_index(set, &b) << "\n";
	std::cout << insert_get_index(set, &c) << "\n";
	
	return 0;
}
