Ai có thể cố gắng giải thích điều này?Hành vi constexpr lạ đối với lớp bên trong
template<typename T, size_t S = T::noElems()>
struct C
{
};
struct X
{
enum E { A, B, C };
static constexpr size_t noElems() { return C+1; };
};
struct K
{
C<X> cx; // this DOES compile
};
struct Y
{
struct Z
{
enum E { A, B, C };
static constexpr size_t noElems() { return C+1; };
};
C<Z, Z::C+1> cyz; // this DOES compile
C<Z> cyz; // <--- this does NOT compile
};
Clang than phiền 'không xác định chức năng' noElems 'không thể được sử dụng trong một biểu thức liên tục' –
Tôi nghĩ rằng nó có thể được trả lời [ở đây] (http://stackoverflow.com/a/8108406/4035785) –
Bạn có thể thêm trình biên dịch không lỗi vào câu hỏi của bạn? – Angew