Inicializando una estructura que contiene un vector de sí misma

Tengo un sistema de menú que quiero inicializar a partir de datos constantes. UNAMenuItem puede contener, como submenú, un vector deMenuItems. Pero solo funciona hasta cierto punto. Aquí están los aspectos básicos del problema:

#include <vector>
struct S { std::vector<S> v ; } ;

S s1 = { } ;
S s2 = { { } } ;
S s3 = { { { } } } ;

g++ -std=c++0x (versión 4.4.5) hace frente as1 ys2, peros3 vuelve con:

prog.cpp:6:22: error: template argument 1 is invalid

(ver ideone). ¿Estoy haciendo algo mal

Respuestas a la pregunta(3)

Su respuesta a la pregunta