¿Cómo ingresar las constantes int64_t / uint64_t?

Lo que intento hacer es definir una constante igual a 2 ^ 30 (puedo cambiarla a algo así como 2 ^ 34, por lo que prefiero tener una habitación de más de 32 bits).

¿Por qué el siguiente ejemplo mínimo (?) No se compila?

#include <stdint.h>
// test.cpp:4:33: error: expected primary-expression before numeric constant
// test.cpp:4:33: error: expected ')' before numeric constant
const uint64_t test = (uint64_t 1) << 30;
//const uint64_t test1 = (uint64_t(1)) << 30;// this one magically compiles! why?

int main() { return 0; }

Respuestas a la pregunta(3)

Su respuesta a la pregunta