Подскажите, пожалуйста, возможно ли инициализировать constexpr
член не в хедере, а в файле реализации?
Например:
// hpp
class Object
{
public:
constexpr size_t VALUE;
};
// cpp
constexpr Object::VALUE = 1U;
Если возможно, то как?
Если нет, то почему?
Давайте подумаем. У вас есть файл, отличный от вашего cpp, в котором написано ваше
constexpr Object::VALUE = 1U;
Но вы пытаетесь в нем обратиться к этому члену. Это обращение требует знания значения во время компиляции, но откуда его взять? Если оно в каком-то третьем файле?
Перерывать все файлы проектов? "Где же логика?!" (с) Анекдот
Нестатические поля класса не могут быть объявлены как constexpr
. Однако для класса можно делать constexpr
конструктор, реализацию которого вынести вне определения класса.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab