2014-12-04 73 views
3

在cppcon的talk期間,Titus Winters表示(他們在42:00)他們有Status課程。關於該類的神奇之處在於,如果返回Status對象並且沒有做任何事情(如果這是正確的做法,可以明確地調用IgnoreError()),那麼C++構建應該失敗。如何在錯誤狀態被忽略的情況下防止編譯?

這是怎麼回事?

據我所知,Status類沒有什麼特別的。我想他們必須將這條規則侵入到他們的構建過程中,但是如何才能做到這一點?

+0

它是不可能做你解釋了(失敗的生成,如果不使用的對象,而不調用它的方法) – 2014-12-04 16:51:48

+3

你可以清楚地看到你鏈接到的代碼中,'Status'類捆綁了一個'enum'和'std :: string',而析構函數和'IgnoreError()'函數'實現什麼也不做 - 沒有魔法 - 所以如果有任何執法它必須在一些靜態分析工具中,Google在構建過程中運行其代碼......而不是通過標準C++特性。 – 2014-12-04 16:53:03

回答