[問題] 模板 特化 與 Compiler Error C2888

作者: Caesar08 (Caesar)   2014-12-05 07:22:40
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 12
問題(Question):
我不想讓別的file使用某file的specialization of class template
解法:
我想到的辦法就是把template specialization放進unnamed namespace
但是編譯器會有symbol cannot be defined within namespace 'anonymous-namespace'
的錯誤訊息
我有測過,如果不放進unnamed namespace,在別的file進行specialization會發生什麼
事情
結果是會導致執行的結果不固定
只要將HeaderImpl.cpp重新編譯,並將main.cpp的15或16行其中一個註解,或都不註解
重新編譯後會有神奇的現象,沒有的話就多試幾次
這樣我也很難確保,不放進unnamed namespace能不能達到我的效果,難道我現在該放棄
我的目的嗎?
底下是測試code
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/qEPWEHt5 //main.cpp
http://codepad.org/hMuDzNPG //Header.h
http://codepad.org/jN9Exbya //Source.cpp
http://codepad.org/Q9LHrIbc //HeaderImpl.cpp

Links booklink

Contact Us: admin [ a t ] ucptt.com