Why does this code only compile if I remove the = 0?
#include <type_traits>
struct Foo
{
virtual ~Foo() noexcept = default;
Foo() = default;
Foo(Foo &&) noexcept = default;
Foo(Foo const &) = default;
Foo &operator =(Foo &&) noexcept = default;
Foo &operator =(Foo const &) = default;
virtual void foo() = 0;
};
static_assert(std::is_nothrow_move_constructible<Foo>::value);