Я пытался понять, как использовать constexpr из разных источников. Но у меня есть проблема, я хочу преобразовать программу ниже, чтобы использовать constexpr вместо const. Эта программа является шаблоном моей основной программы.
class B;
class A{
public:
constexpr A(int){}
const static B& obj;
};
class B:A{
public:
constexpr B(int x):A(x){}
const static B& obj;
};
const B& A::obj=B(10);
const B& B::obj=B(20);
В последней строке я хочу использовать constexpr, чтобы гарантировать, что эта переменная obj присутствует во время компиляции и, таким образом, уменьшить мой размер кода и оптимизировать, но в соответствии со стандартами constexpr не может быть использован. И это дает ошибку о нескольких объявлениях. И если я изменю const в классе A, то инициализация обязательна. Я хочу использовать переменную obj в функции constexpr, и, поскольку obj отсутствует в ошибке времени компиляции. Я спрашиваю, как я могу решить проблему, потому что, если это не может быть сделано, то, вероятно, на оптимизацию кода влияют 15%, что действительно огромно.