[問題] 關於contructor template的兩個問題

看板C_and_CPP (C/C++)作者時間15年前 (2010/08/26 01:05), 編輯推噓1(1021)
留言22則, 6人參與, 最新討論串1/1
Code : http://codepad.org/mTAG98oV 編譯環境是VC 2008 SP1 我想問題問題有兩個 1、 第36行開始的全特化compile不過 錯誤訊息: C2143: syntax error : missing ';' before '<' 嗯..後面幾個不重要,總之是syntax error 以前面的function template foo為例,全特化的模板參數可寫可不寫 不寫的話compiler會幫你推導 但是在constructor template,不寫會過(code 31行) 寫了反而會compile error..這是什麼巫術!? 2、 第43行 compile error MyTest test(true, true); 因為沒有這個constructor 這我可以理解,第5行的template根本沒有instantiation 我想問題問題是,有什麼方法可以explicit instantiation這個template嗎? MyTest test<bool>(true, true); 也會syntax error.. 當然如果像第10行那樣,參數列上有typename,就能deduce出來 但是像第5行的template有辦法explicit instantiation嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.171.80

08/26 01:07, , 1F
第一眼看過去 只發現你29行少一個分號XD
08/26 01:07, 1F

08/26 01:08, , 2F
沒事...當我沒說
08/26 01:08, 2F

08/26 01:10, , 3F
姆 我也不知道為什麼少一個分號 不過function後的分號
08/26 01:10, 3F

08/26 01:10, , 4F
本來就可加可不加 應該不影響
08/26 01:10, 4F

08/26 01:24, , 5F
就我所知第二個問題是無解的
08/26 01:24, 5F

08/26 01:24, , 6F
對了,我剛剛在GCC的Bug report #9050發現一樣的問題
08/26 01:24, 6F

08/26 01:25, , 7F
但是我學校的工作站只到4.4.5,不知道誰有4.5可以試試看
08/26 01:25, 7F

08/26 01:28, , 8F
4.6會過
08/26 01:28, 8F

08/26 01:30, , 9F
好吧 看來這是M$的巫術了 我該換2010了..
08/26 01:30, 9F

08/26 01:31, , 10F
可以寫個template factory替代XD
08/26 01:31, 10F

08/26 01:46, , 11F
4.5好像還是沒有更正這個bug?
08/26 01:46, 11F

08/26 02:01, , 12F
第一個問題解決 http://codepad.org/XHhunUss, 雖然角
08/26 02:01, 12F

08/26 02:04, , 13F
括號裡的參數可以不給, 但是 VC2010 似乎強制不能給
08/26 02:04, 13F

08/26 02:08, , 14F
VC2008 也是一樣
08/26 02:08, 14F

08/26 02:13, , 15F
沒看到前面幾行= =拍謝
08/26 02:13, 15F

08/26 08:18, , 16F
不用換2010, 因為我用2010也是兩個都不給過 XD
08/26 08:18, 16F

08/27 10:15, , 17F
http://codepad.org/rqhWVPB7 這樣子可以嗎?
08/27 10:15, 17F

08/28 05:55, , 18F
To 樓上: 參數列上有T和U當然可以deduce出來啊..
08/28 05:55, 18F

08/28 05:56, , 19F
我的問題是有沒有除了deduce之外的方法instantiation..
08/28 05:56, 19F

08/28 11:34, , 20F
template<class T> MyTest::MyTest(bool,bool,T* = 0) {}
08/28 11:34, 20F

08/28 11:35, , 21F
MyTest test(true, true, new bool(false));
08/28 11:35, 21F

08/28 11:37, , 22F
不太了解要這樣使用的意義,方便講解一下嗎?
08/28 11:37, 22F
文章代碼(AID): #1CTKrXeI (C_and_CPP)
文章代碼(AID): #1CTKrXeI (C_and_CPP)