C ++ 17 static и constexpr - PullRequest
       6

C ++ 17 static и constexpr

0 голосов
/ 17 мая 2018

Я использую Clang, который поставляется в комплекте с Xcode 9.3, и я пытаюсь понять, является ли следующий результат преднамеренной частью изменений C ++ 17:

#include <iostream>

template<typename T> struct Test {
    static const int TEN;
};
template<typename T> constexpr int Test<T>::TEN = 10;

int main(int argc, const char * argv[]) {
    std::cout << Test<int>::TEN << std::endl;
    return 0;
}

При компиляции сc ++ 11 или c ++ 14, это печатает "10".Однако, компилируя это с c ++ 17, это печатает «0».

Что происходит?

1 Ответ

0 голосов
/ 19 мая 2018

После публикации этого в другом месте, разработчик Clang признал, что это была ошибка в реализации clang-5 c ++ 17, и что она исправлена ​​в clang-6 и далее.

Спасибо tkausl за его первоначальный комментарий, который показал разные результаты в clang-6 и gcc, что побудило меня спросить в другом месте.

...