1
コンパイラは、暗黙的に宣言された仮想デストラクタの実装を単一の個別の翻訳単位に配置できますか?
次のコードはVisual Studio(2017と2019の両方で/permissive-)でコンパイルおよびリンクしますが、gccまたはでコンパイルしませんclang。 foo.h #include <memory> struct Base { virtual ~Base() = default; // (1) }; struct Foo : public Base { Foo(); // (2) struct Bar; std::unique_ptr<Bar> bar_; }; foo.cpp #include "foo.h" struct Foo::Bar {}; // (3) Foo::Foo() = default; main.cpp #include "foo.h" int main() { auto foo = std::make_unique<Foo>(); …