It means nothing, you better don't write it. Give a proper name to the typedef, if you want
typedef class a_t a_t;
I don't see any benefit of that though. A C programmer who recently changed over to C++ may be inclined to do this though, as in C you cannot refer to a class name ("tag", in C terms) by simply naming it, but you have to prefix it with the tag kind ("struct a_t", or "union a_t") or you make a typedef for it. However even in this setting, the programmer would have forgotten the name afterwards :)
In C++ that's not needed. In C++, the presence of both a typedef name and a class name is not resolved by keeping those names in different "namespaces" (so to speak, in C terms. Each "namespace" there is a kind of "syntax directed disambiguation". So that you can say "foo" and "struct foo" and "goto foo", and each time "foo" may be a totally different entity). In C++, the typedef name will replace the pure class name, and henceforth that name "a_t" is both - a typedef name and a class name.
As for the Standardese, we have an issue open for this, see http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#157 .