模板推导指南失败,出现 '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)];
};
我正在阅读模板演绎然后尝试创建一个。 如下:-
#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)];
};