编译器合成默认构造函数问题

最近看《深度探索C++对象模型》,遇到了一个疑问。
在4种情况下会合成nontrivial构造函数,那其他情况到底是【没有合成构造函数】还是合成了无用的【trivial构造函数】?
虽然这两者的外在表现一样,但内部这个构造函数是否被合成?
P40框内说合成,P47结尾又说没有被合成。

书中还有一句“Default constructor的合成操作只有在constructor真正需要被调用时才会发生”,那么对以下语句是否合成了构造函数?

if(condi) {
    A* a = new A;
}else {
    B* b = new B;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^