具有{}的函数重载解析 P>我们的C++库允许用户在ValueCu构造器中传递在类中封装的值列表,这样这些列表的长度可以在编译时检查。我试图通过添加新的重载函数来添加一些新功能。但是,当我传递一个长度为零的参数数组(例如{})时,调用了“错误”重载。以下示例说明了该问题: #包括 #包括 类空列表 { 公众: 模板 空列表(T&…VAL) { 静态断言(sizeof…(vals)==0,“值的数目错误”); } std::vector getValues()常量{return{};} }; void testVector(int*a,std::vector b) { 标准::cout

具有{}的函数重载解析 P>我们的C++库允许用户在ValueCu构造器中传递在类中封装的值列表,这样这些列表的长度可以在编译时检查。我试图通过添加新的重载函数来添加一些新功能。但是,当我传递一个长度为零的参数数组(例如{})时,调用了“错误”重载。以下示例说明了该问题: #包括 #包括 类空列表 { 公众: 模板 空列表(T&…VAL) { 静态断言(sizeof…(vals)==0,“值的数目错误”); } std::vector getValues()常量{return{};} }; void testVector(int*a,std::vector b) { 标准::cout,c++,c++11,overload-resolution,list-initialization,C++,C++11,Overload Resolution,List Initialization,有没有办法解决这个问题,这样就可以选择使用my类的函数重载而不是使用指针的函数重载 没有显式强制转换是不行的。在执行隐式转换时,对指针的转换将始终比对用户定义类型的转换具有更高的优先级。在我可以弃用旧方法之前,必须重新排序参数以避免出现问题-谢谢! Vector: A (0) Init list: B Empty list: A (0)

有没有办法解决这个问题,这样就可以选择使用my类的函数重载而不是使用指针的函数重载


没有显式强制转换是不行的。在执行隐式转换时,对指针的转换将始终比对用户定义类型的转换具有更高的优先级。

在我可以弃用旧方法之前,必须重新排序参数以避免出现问题-谢谢!
Vector: A (0)
Init list: B
Empty list: A (0)