为什么不能为构造函数模板指定模板参数

Why can't you specify template argument for constructor template

前段时间我想写一个 class 可以 return 指向一个类型的指针,它一直用相同的参数初始化。由于这只有 returns 个指针,如果我想创建一个对象 returning A*,但生成 B*,它是 A 的子对象,那么不会有问题,因为 B* 可以转换为 A*。我想将它们存储在一个向量中,但我并不真正关心生成的类型是 B 还是 C,只关心它是 A 的子类型。我想做类似的事情:

template<class RET_TYPE>
class Generator {
    public:
        template <class GEN_TYPE, class... Args> requires requires (Args...){
            { new GEN_TYPE(Args...) } -> std::convertible_to<RET_TYPE*>;
        }
        Generator (Args...) { /* Implementation */ }
        RET_TYPE getObject() { /* Implementation */}
};

唯一的问题是,据我所知,无法指定构造函数的模板参数。最后我使用了一个解决方法,但我没有找到一个很好的解释来解释为什么会这样。我找到了最详细的一个,谈到构造函数实际上并不拥有这样的名称,但如果这是唯一的问题,它肯定可以通过以下方式解决:Generator<class template><Constructor template>(),不是吗?我看到的问题是名称解析,但这应该不是问题,因为它是明确的。

这是标准的解释,[temp.arg.explicit]/8:

[Note 4: Because the explicit template argument list follows the function template name, and because constructor templates ([class.ctor]) are named without using a function name ([class.qual]), there is no way to provide an explicit template argument list for these function templates. — end note]

[class.ctor.general]/1

Constructors do not have names.