Một static constexpr
sẽ ngầm cũng được inline
, nếu không bạn sẽ cần phải đánh dấu nó như inline
template<typename T>
struct SomeClass {
inline static T test; // Now inline
};
struct SomeClass2 {
static constexpr int test = 9; // inline
};
CFR. từ n4606 [depr.static_constexpr]
Đối với khả năng tương thích với tiêu chuẩn quốc tế trước khi C++, một constexpr tĩnh thành viên dữ liệu có thể dư thừa redeclared bên ngoài lớp không có initializer. Việc sử dụng này không được chấp nhận.
Ví dụ:
struct A {
static constexpr int n = 5; // definition (declaration in C++ 2014)
};
const int A::n; // redundant declaration (definition in C++ 2014)
và [dcl.constexpr]
(Barry đánh bại tôi vào nó)
Một chức năng hoặc thành viên dữ liệu tĩnh khai báo với specifier constexpr là ngầm một hàm nội tuyến hoặc biến (7.1 .6).
Nguồn
2016-11-17 15:33:26