Да, это POD в соответствии с новыми правилами .
Если вы посмотрите параграф §8.4.2 / 4 нового стандарта, вы увидите, что если конструкторустанавливается по умолчанию в первом объявлении, оно не предоставляется пользователем:
Явно-дефолтные функции и неявно объявленные функции вместе называются дефолтными функциями, и реализация должна предоставлять неявныеопределения для них (§12.1 §12.4, §12.8), что может означать определение их как удаленных.Специальная функция-член предоставляется пользователем , если она объявлена пользователем и не имеет явных значений по умолчанию или удалена в первом объявлении.(...)
Вы можете использовать черту типа std::is_pod
, чтобы компилятор протестировал это для вас с помощью static_assert
.
static_assert(std::is_pod<B>::value, "B should be a POD");