我必须执行以下代码:
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)符合所有条件。 Clang和GCC也接受您的来源,因此如果我忽略了某些内容,我会感到惊讶。