#include <iostream>
#include <vector>

template<typename ElementType, typename MemberType>
std::vector<MemberType> CopyAllOfMember(const std::vector<ElementType> &container, MemberType ElementType::*ptrToMember)
{
    std::vector<MemberType> values(container.size());
        
    size_t index = 0;
	for(const ElementType &element : container)
    {
        values[index++] = (element.*ptrToMember);
    }

    return values;
}


struct TestStruct
{
	bool dummyA;
	int value;
	float dummyB;
};


int main()
{
	std::vector<TestStruct> container = {{true, 1, 0.0f}, {true, 2, 0.0f}, {true, 3, 0.0f} };
	
	std::vector<int> justTheInts = CopyAllOfMember(container, &TestStruct::value);
	
	for(int value : justTheInts)
	{
		std::cout << value << " ";
	}
	
	return 0;
}