Проблема в том, что кто-то может увидеть список инициализаторов элементов в конструкторе и подумать, что они выполняются в таком порядке (сначала j, затем i). Это не так, они выполняются в том порядке, в котором члены определены в классе.
Предположим, вы написали A(): j(0), i(j) {}
. Кто-то может прочесть это и подумать, что я заканчиваю со значением 0. Это не так, потому что вы инициализировали его с помощью j, который содержит мусор, потому что он сам не был инициализирован.
Предупреждение напоминает вам написать A(): i(j), j(0) {}
, что, надеюсь, выглядит более подозрительно.