我必须执行以下代码:

class IP4Address
{
    public:
    constexpr IP4Address();
    constexpr IP4Address(uint32_t a_IP, uint16_t a_Port);

    private:
    uint32_t m_IP;
    uint16_t m_Port;
};

constexpr IP4Address::IP4Address():
    IP4Address(0, 0)
{

}

constexpr IP4Address::IP4Address(uint32_t a_IP, uint16_t a_Port):
    m_IP(a_IP),
    m_Port(a_Port)
{

}

导致以下错误(Visual Studio 2015):
error C2476: 'constexpr' constructor does not initialize all members
note: 'IP4Address::m_IP' was not initialized by the constructor
note: 'IP4Address::m_Port' was not initialized by the constructor

这是无效的C++吗?难道我做错了什么?还是这可能是编译器错误?

最佳答案

这是MSVC 2015中的一个错误。C++ 11文档§7.1.5 4以一种非常清晰的方式表示:



您的类(class)符合所有条件。 ClangGCC也接受您的来源,因此如果我忽略了某些内容,我会感到惊讶。

10-07 20:25