引用
最初由 Netwxy 发布
无聊来解释一下
enum最后那个逗号不会产生错误,相反可以方便日后增加新的enum项
模版参数当然是不用检查有效性的(也没有好办法检查),传进来的东西是不是对的全靠使用者决定。所以C++0x才要增加concept来限制模版参数的行为。
嵌套类可以正常继承自己外面的类,而且因为身处模版类里面,所以可以直接使用Mixer而不加模版参数(会默认为Mixer)
那个inline是signed 16位整型转unsigned 8位整型,就是把-32768到32767之间的数变换到0到255,所以是返回u8(v/256 + 128)
至于那两个decoder没写完,大家就当是剩下的部分在屏幕外面吧[/han]
逗號這個還真的不知道。。
檢查模版參數我指的是非類型模版參數,這個可以用static assert這類手法來檢查,不然的話,給個-1作為vocs的數組下表就好玩了。。。哦,對,那個非類型模版參數居然是int型。。數組下標就給我乖乖的用size_t。。。。
嵌套類繼承自己外部的類是絕對不行的因為要從一個類去派生必須知道它的具體佈局,而在嵌套類定義的時候其外部類的定義勢必尚未結束,編譯器這時還不知道外部類的佈局,所以在這個點上外部類尚未完成定義,這是一個不可解的循環,是沒有任何trick能解決這個問題的。這是之前我曾經想過用嵌套類繼承外部類的手法來實現一種trick,翻遍標準得出來的結論。(付VC8的編譯錯誤信息)
inline那個函數從名字能看出用處,不過用這種寫法會讓維護變得非常頭痛,而且可移植性也會很差,應該使用limits庫。
那兩個decoder。。。。。我真想知道她用的多大的屏幕,這麼長的一個函數居然不換行。。。。