Как ввести константы int64_t / uint64_t?

Я пытаюсь определить константу, равную 2 ^ 30 (я могу изменить ее на что-то вроде 2 ^ 34, поэтому я предпочитаю иметь комнату размером более 32 бит).

Почему следующий минимальный (?) Пример не компилируется?

#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; }