clang: нет внешних определений виртуальных методов (чистый абстрактный класс C ++)

Я пытаюсь скомпилировать следующий простой код C ++, используя Clang-3.5:

test.h:

class A
{
  public:
    A();
    virtual ~A() = 0;
};

test.cc:

#include "test.h"

A::A() {;}
A::~A() {;}

Команда, которую я использую для компиляции (Linux, uname -r: 3.16.0-4-amd64):

$clang-3.5 -Weverything -std=c++11 -c test.cc

И ошибка, которую я получаю:

./test.h:1:7: warning: 'A' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit [-Wweak-vtables]

Любые намеки, почему это предупреждение? Виртуальный деструктор вообще не встроен. Наоборот, в test.cc есть внешнее определение. Что мне здесь не хватает?

редактировать

Я не думаю, что этот вопрос является дубликатом:В чем смысл Clang's -Wweak-vtables? как предложил Филипп Розен. В моем вопросе я специально ссылаюсь на чистые абстрактные классы (не упомянутые в предложенном дубликате). я знаю как-Wweak-vtables работает с неабстрактными классами, и я в порядке с этим. В моем примере я определяю деструктор (который является чисто абстрактным) в файле реализации. Это должно предотвратить появление ошибок Clang, даже если-Wweak-vtables.

Ответы на вопрос(1)

Ваш ответ на вопрос