在能夠使用C++的某些功能進行內核開發之前,必須完成一些工作。例如,爲了能夠有效地使用類,必須調用例程來調用構造函數和析構函數屬性。在C++中使用模板是否需要一些任務初始化?
可以禁用不需要的其他功能,例如RTTI(運行時類型信息)。
假設類正常工作,是否需要做其他工作才能使用模板?
在能夠使用C++的某些功能進行內核開發之前,必須完成一些工作。例如,爲了能夠有效地使用類,必須調用例程來調用構造函數和析構函數屬性。在C++中使用模板是否需要一些任務初始化?
可以禁用不需要的其他功能,例如RTTI(運行時類型信息)。
假設類正常工作,是否需要做其他工作才能使用模板?
我認爲主要的問題是編寫運行時代碼來處理異常處理。內核和編譯器需要就調用約定的細節達成一致,比如堆棧的結構,以及析構函數如何被註冊,發現和調用。
如果你想支持異常處理,那麼你(基本上)必須啓用RTTI,因爲C++ catch
語義做動態類型匹配。
另一個問題可能是內存分配。 new
很自然地映射到malloc
,但如果你有一個奇怪的kmalloc
與額外的參數(如Linux),那麼它可能需要一些思考。
模板以及調用構造函數和析構函數(除了異常處理)的位置完全由編譯器處理,所以應該「只是工作」。
大概Torvalds會非常想給你一些監禁時間。 – webuster 2014-09-11 12:39:18