Ответ 1
Да, это 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");