Рассмотрим моего простой пример ниже:Любопытно повторяющийся узор шаблона (CRTP) со статической constexpr в 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;
}
В г ++, это нормально компилируется и печатает 5
, как ожидался. Однако в Clang он не компилируется с ошибкой no member named 'x' in 'Derived'
. Насколько я могу судить, это правильный код. Что-то не так с тем, что я делаю, а если нет, есть ли способ получить эту работу в Clang?
Очень похожий вопрос: http://stackoverflow.com/q/35759047/996886 – melak47
При инициализации 'y' вне' Base' класс это работает? –
@ Вы не можете инициализировать 'constexpr static int' вне класса. – melak47