Hãy xem xét ví dụ đơn giản của tôi dưới đây:Tò mò lặp đi lặp lại mô hình mẫu (CRTP) với constexpr tĩnh trong Clang
#include <iostream>
template <typename T>
class Base
{
public:
static constexpr int y = T::x;
};
class Derived : public Base<Derived>
{
public:
static constexpr int x = 5;
};
int main()
{
std::cout << Derived::y << std::endl;
}
Trong g ++, này biên dịch tốt và in 5
như mong đợi. Trong Clang, tuy nhiên, nó không biên dịch với lỗi no member named 'x' in 'Derived'
. Theo như tôi có thể nói đây là mã chính xác. Có điều gì đó sai trái với những gì tôi đang làm, và nếu không, liệu có cách nào để có công việc này trong Clang?
câu hỏi Rất tương tự: http://stackoverflow.com/q/35759047/996886 – melak47
Nếu bạn khởi tạo 'y' bên ngoài của 'Base' lớp nó hoạt động? –
@Ben bạn không thể intialize một 'constexpr static int' bên ngoài lớp. – melak47