I have some global constexpr
Mask
s that I would like to make a part of my Mask
class as a static constexpr
to reduce globals in main.cpp
Currently this works:
main.cpp has:
constexpr Mask cg_completeMask(0xffffffffffffffffull, 0x1ffff);
Mask.hpp has (reduced for SO):
class Mask { unsigned long long m_64; unsigned int m_32; public: constexpr Mask(const unsigned long long ac_64, const unsigned int ac_32) : m_64(ac_64), m_32(ac_32) {} };
What I tried to move the global Mask
s from main.cpp:
Mask.hpp has:
class Mask { unsigned long long m_64; unsigned int m_32; public: static constexpr Mask completeMask; constexpr Mask(const unsigned long long ac_64, const unsigned int ac_32) : m_64(ac_64), m_32(ac_32) {} };
Mask.cpp has:
constexpr Mask Mask::completeMask(0xffffffffffffffffull, 0x1ffff);
What I tried produces these errors:
In file included from main.cpp:3:0:
Mask.hpp:12:27: error: constexpr static data member 'completeMask' must have an initializer
static constexpr Mask completeMask;
^
In file included from Mask.cpp:1:0:
Mask.hpp:12:27: error: constexpr static data member 'completeMask' must have an initializer
static constexpr Mask completeMask;
^