希望你们能帮助您: 我有以下功能应该与特定类型的返回一个对象的Foo,在这种情况下:在我的富推导出非本模板参数
Foo<int,bool> make_my_foo_object() {
return make_foo(10);
}
I类有:
template <class A, class B>
struct Foo {
Foo(A aa): a(aa) {}
Foo(B bb): b(bb) {}
A a;
B b;
};
然后,在我的make_foo功能我:
template<typename A, class B>
Foo<A,B> make_foo(A a) {
return Foo<A,B>(a); // this should call the Foo(A) ctor
};
我知道这是不可能的,因为在这个简单的实现中没有办法可以根据make_foo的返回类型推断B
。
在这种情况下没有太大意义,但是整个想法是处理模板参数,因为它们被错过了而无法推导出来。
我想避免的是指定中的类型返回make_foo <int, bool>
(10);中的函数。
你们认为这有可能的解决方法吗?或者这是一个不行!
任何帮助或信息将不胜感激。 谢谢。
首先,你为什么要避免它传递这些参数?你有他们在上面的行。我问这是因为我可以提出解决方案,但如果我不明白你真正的问题,解决方案可能无法帮助你*。那会浪费我的时间(产生一个不能帮助你的解决方案)。你能否描述一个你正试图解决这个请求的实际问题? – Yakk
你为什么不写'return {10};'。额外的'make_foo'调用如何有用 –
在这个例子中,模板参数很小。真正的例子可能会更棘手,而不仅仅是'make_foo()'。由于模板参数不能从它们的构造函数中推导出来,所以我需要这个解决方法,因为它是一个众所周知的成语,可以解决这个问题。这个问题对我来说很明显,但问题是如何去(如果可能的话)过去。 如果您需要创建一个包含10种不同类型的元组,您将避免输入所有类型。 谢谢。 –
Olivier