This is a mistake in the C ++ specification (which prevents this simple construct from compiling). You need to specify the size
char *a = new char [3] {'a', 'a', 'a'};
See http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1469 . Note that if you copy the type name, this is the type identifier, not the identifier of the new type, and therefore syntactically allows you to omit the size expression. So you can find an implementation that lets you say
char *a = new (char[]){'a', 'a', 'a'};
, , ( new , ).