С тех пор, как static-поля стало можно делать инлайновыми, пользуетесь ли вы для чего-то не инлайновыми static-полями?
Я нашёл один полезный кейс — ресурсы. Объявляю в хедере
Resource.h дерево структур, типа:
struct Resources
{
struct Type1
{
static Text Resource1; // Text это тип, могут быть другие типы
}
};
А инициализацию:
Resources::Type1::Resource1 = ...;
делаю в каждой из локализаций:
Resource.en.cpp,
Resource.ru.cpp и т.д. Локализации переключаются макросами. Забыл локализовать используемый ресурс или неправильно подключил локализацию — лови ошибку линкера (в этом смысл). Удобно ли ресурсы хранить в формате C++, это отдельный вопрос.
Есть ли другие сценарии? Просто думаю, насколько оправдано в гайдлайн включить пункт о неиспользовании неинлайновых static-полей для всего, кроме ресурсов.