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