我使用的模板庫中,B類是A類參數化我有一個聲明C++模板參數推導/ substition失敗
template <class A, template <class A> class B>
void foo(){
B<A> x;
}
後來我想調用這個作爲一個
模板類foo<A, B>();
其中X是庫中的具體類,Y是庫中特定的模板具體類。但是,我得到的標題錯誤abour模板參數扣除/替換失敗。如果我將foo的聲明更改爲刪除模板並在X和Y中替換,則一切正常。我也嘗試過
foo<X, Y<X> >();
失敗的消息是相同的。有人可以解釋爲什麼會這樣嗎?
我用gcc 5.3.0
這裏有一個完整的例子給指定的行爲
#include <vector>
template <class A, template <class A> class B>
void foo() {
B<A> x;
}
void bar() {
foo<int, std::vector>();
}
提供一個[MCVE]如需要請。 –