А зачем сохранять контекст, стеки, регистры и прочее и потом обратно их востанавливать ради того, чтобы прочитать одну переменную?
Чтоб компилятор мог заинлайнить функцию её реализация должна быть видима в юните трансляции который компилируется, то есть если у тебя реализация в cpp единственный tu где компилятор сможет её заинлайнить это этот cpp файл, если ты хочешь дать возможность инлайнить в другие tu тебе реализацию нужно положить в хедер. Сейчас inline кейворд нужен для того чтоб пометить реализацию в хедере отделенную от декларации, в остальном ты не очень можешь управлять как компилятор заинлайнит функцию. Есть forceinline но это implementation defined. В случае с тривиальным гетером, если ты делаешь его реализацию видимой в хедере она всегда инлайнится.