替换为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