希望你們能幫助您: 我有以下功能應該與特定類型的返回一個對象的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