error: inicializador anacrónico de clase base de estilo antiguo

El siguiente código produce el error de compilación posterior en todas las versiones de GCC que he probado, en los modos C ++ 98, C ++ 11 y C ++ 14:

struct T
{
    T(void* x) : (x) {}
};

// main.cpp: In constructor 'T::T(void*)':
// main.cpp:3:18: error: anachronistic old-style base class initializer [-fpermissive]
//      T(void* x) : (x) {}
//                   ^
// main.cpp:3:16: error: unnamed initializer for 'T', which has no base classes
//      T(void* x) : (x) {}

Claro, es un código claramente roto porque en realidad no estoy inicializando nada.

Pero, ¿por qué es un inicializador de clase base y por qué es "anacrónico", en lugar de simplemente incorrecto? ¿Alguna vez fue válido? ¿Cuando? Y que significaba?

lossolo relreferencias modificadas Descubrí que esto en la web ha sido gente que se encuentra con el error cuando un nombre de miembro se borró accidentalmente, lo que resultó en el mismo código que el anterior:

#define bar
// ^ some library could have done this

struct T
{
    T(int x)
        : bar(x)   // effectively just `: (x)`
    {}

    int bar;       // will cause its own error
};

Esas personas nunca descubrieron qué significaba el error, aunque más tarde al menos descubrieron por qué su programa estaba roto.

Respuestas a la pregunta(3)

Su respuesta a la pregunta