好的,谢谢所有看过这个的人。我已经重新创建了确切的场景以便在下面的链接中轻松查看,因此我将注释掉我所拥有的原始文本,因为它并不清楚。 http://cpp.sh/5lp4l
在评论部分我显示调用 make_some(32, std::string{"hi"}) 而不指定调用的数据类型声明。我意识到这似乎很疯狂,并且远远超出了我的预期用例,根据参数自动推断复合类型(推断我想要的数据,基于 int/string)不是必需的,或者是一个好主意。
好的,谢谢所有看过这个的人。我已经重新创建了确切的场景以便在下面的链接中轻松查看,因此我将注释掉我所拥有的原始文本,因为它并不清楚。 http://cpp.sh/5lp4l
在评论部分我显示调用 make_some(32, std::string{"hi"}) 而不指定调用的数据类型声明。我意识到这似乎很疯狂,并且远远超出了我的预期用例,根据参数自动推断复合类型(推断我想要的数据,基于 int/string)不是必需的,或者是一个好主意。
编译器是对的。T
和之间没有给出任何关系Args
。因此,它无法确定是什么QueryResult<T>
意思。
您显然期望的是 force 的somefn
返回T
类型int, int
。这显然是不可能的,原因有两个:T
表示单一类型,并且没有任何机制可以让return
语句以某种方式影响make_some
.
您是否尝试过使用auto
as 类型声明?
还将decltype (variable_here) variable_to_inherit_type;
第二个变量的类型设置为第一个变量的类型。您可能可以首先使用它设置与传入变量相同的类型。
我不确定这是否适用于您的情况,但如果有帮助,请告诉我!