I'm still learning but this geometry shader is giving me no end of trouble and asking for some help.

My system is a MacBook Pro 2015 with Intel Iris which supports OpenGL 4.1

I'm drawing a plane using an index buffer with

Code :
glDrawElements(GL_TRIANGLE_STRIP, this->size(), GL_UNSIGNED_SHORT, 0);

Which using a the following vertex and fragment shader works perfectly. But when the geometry shader comes in I get nothing. I've tried all kinds of combination but it still gives me absolutely nothing as output. Anyone got ideas what I am doing wrong?

Here's the shaders (should simply be pass through)
Code :
    // Vertex
    const char* vert = R"glsl(
    #version 410
 
    layout (location = 0) in vec2 in_position;
 
    uniform mat4 MVP;
 
    void main() {
        gl_Position = MVP * vec4(in_position.x, 0.0f, in_position.y, 1.0f);
    }
 
    )glsl";
 
    // Geometry
    const char* geom = R"glsl(
    #version 410
 
    layout(triangles) in;
    layout(triangle_strip, max_vertices = 3) out;
 
    void main() {
 
        for (int i = 0; i < 3; ++i) {
            gl_Position = gl_in[i].gl_Position;
            EmitVertex();
        }
        EndPrimitive();
    }
    )glsl";
 
    // Fragment
    const char* frag = R"glsl(
    #version 410
 
    out vec4 out_color;
 
    void main() {
        out_color = vec4(1.0f);
    }
    )glsl";

I've tried passing the colour through from vertex-geom-fragment, varying inputs, not using an MVP transform and all kinds of things. Am I missing something vital with this simple setup? I'm not setting up and glProgramParameteri because I assumed they were not necessary with geom layouts.

Thanks
Fred