inline static int idxMyProperty() { static int i = s_MetaTable.propByName("MyProperty"); return i; }
Может не очень удачный пример - static здесь никак не роялит. Если уж проверять, то:
inline static int idxMyProperty()
{
static int i = -1; // начальное (недопустимое) значение
if (i < 0)
i = s_MetaTable.propByName("MyProperty");
return i;
}
По идее должны иметь один i на все вызовы (и внешние тоже), inline есть личное дело компилятора, ф-циональность та же. Да и вообще неизвестно будет ли он делать это inline'ом