#include <iostream>
#include <sstream>
#include <algorithm>
#include <iterator>
#include <vector>

class MyClass {
public:
    int specific_detail;
};

class MyClassDetail {
    const MyClass &m_cls;
public:
    MyClassDetail(const MyClass &src) : m_cls(src) {}
    friend std::ostream& operator<<(std::ostream &out, const MyClassDetail &in) {
        return out << in.m_cls.specific_detail;
    }
};

int main() {
    std::vector<MyClass> vec;
    for(int i = 1; i <= 5; ++i) {
        MyClass cls;
        cls.specific_detail = i;
        vec.push_back(cls);
    }
	std::ostringstream ss;
    std::copy(vec.begin(), vec.end()-1, std::ostream_iterator<MyClassDetail>(ss, ", "));
    ss << MyClassDetail(vec.back());
    std::cout << ss.str();
	return 0;
}