Let's create a private or private static method that initializes glfw and then invokes the glfwCreateWindow(). The method can then return a GLFWWindow* which enables us to move this logic into the initializer list.

Window(....)
:window(new_method(width, height, title))
{}

It's good practice to initialize all you can in the initializer list. It's more efficient, you construct the objects as you allocate space instead of allocating space, calling the default constructor on your member's objects and then later making a copy. It's just more of a pain in this instance because of the GLFW initialization you have to do.