Это может не иметь большого смысла, но вы, безусловно, можете сделать это:
static int * p = new int(1);
Проблема заключается в уничтожении объекта. Это, вероятно, не имеет большого значения на практике, если деструктор не имеет какого-либо побочного эффекта (такого как запись в файл), который вам требуется, и в этом случае статический умный указатель (вероятно) выполнит эту работу.
Сказав это,
static int i = 1;
может показаться предпочтительным практически во всех обстоятельствах.
Редактировать: Я неправильно понял ваш вопрос, но я оставлю это здесь, так как он рекомендует смутно хорошую практику.