[問題] template + vector

作者: su27 (su27)   2022-03-29 18:12:44
開發平台(Platform): (Ex: Win10, Linux, ...)
win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
qt
問題(Question):
dll的函數
void fun_1(vector<uchar> &val)
void fun_2(vector<char> &val)
我在qt寫一個函數
功能是
填寫不同的dataType
調用來自DLL不同的函數
template <class type>
static void Select_fun(vector<type> vtp)
{
if (std::is_same<type, uchar>::value)
{
vector<uchar> &temp=vtp; //<<這邊報錯
fun_1(temp);
}
else if (std::is_same<type, char>::value)
{
fun_2(vtp); //<<這邊報錯
}
}
錯誤訊息
//
作者: sarafciel (Cattuz)   2022-03-29 18:19:00
模板不會幫你繞掉type checking,請把偏特化拿出來用更正 全特化
作者: Schottky (順風相送)   2022-03-29 19:18:00
樓下 Su22
作者: harryooooooo (真_終極蘿莉控Ecstasy_)   2022-03-29 19:44:00
c++17以後的話也可以用if constexpr
作者: jack7775kimo (阿龐)   2022-03-29 21:49:00
錯誤訊息裡面為何會有vector<int>?
作者: steve1012 (steve)   2022-03-31 05:26:00
If branch 在runtime 才會跑所以template 還是instantiate 那段code 了你要conditionally compile 要用constexpr if

Links booklink

Contact Us: admin [ a t ] ucptt.com