模板推导指南失败,出现 'too many initializers' 错误

Template deduction guide fails with 'too many initializers' error

我正在阅读模板演绎然后尝试创建一个。 如下:-

#include <iostream>
#include <array>
using namespace std;
template<int i,typename A,typename... B> struct deducted{

};
//Deduction guide
template<typename A,typename... B> deducted(A a,B... b)->deducted<0,A,B...>;
//

int main(){
    deducted a={"","",""};
    deducted b={0,0,0};
    array c={0,0,0};
}

令我惊讶的是 error: too many initializers for 'deducted<0, const char*, const char*, const char*>' 测试失败,但 std::array 版本工作正常。我可能遗漏了什么,有人可以重写得更好吗?

推理有效,但构造失败。

提供构造函数。 (或聚合初始化的适当成员)。

你有太多的初始化器,因为没有什么可以接收你初始化它的东西。

示例修复:

#include <type_traits>

template<int i, typename A, typename... B>
struct deducted{
    A a;
    std::common_type_t<B...> arr[sizeof...(B)];
};

Demo