替換爲static const成員我跨代碼來這樣從程序員本人高度方面:優勢與靜態成員函數
class BigClass {
using MyId = uint32_t;
static constexpr MyId INVALID_ID() { return std::numeric_limits<MyId>::max();};
class SmallClass {
/* Constructor, etc. */
MyId id = INVALID_ID(); /* Default value */
};
};
是否有任何明顯的優勢,定義INVALID_ID()爲函數而不是作爲一個靜態常量變量?
問題static constexpr variable vs function與我的問題完全相同(我使用uint32_t
作爲示例,但我發現其他類型的問題也很有趣)。但是,我對這個問題的答案並不滿意。在閱讀了這裏的一些答案之後,我相信使用函數比使用簡單模板更有優勢。
那麼,因爲它不是一個靜態成員變量,它不需要在類之外定義。 – NathanOliver
@NathanOliver在使用ODR之前,IIRC靜態常量不需要定義。 – Quentin
@Quentin Typo固定。他們可能會在這種情況下使用它。 – NathanOliver