Не могу скомпилировать структурированные привязки C ++ 17 - PullRequest
0 голосов
/ 03 января 2019

Следующий код

#include <iostream>
#include <tuple>

int main()
{
    auto [i, c, d] = std::make_tuple(1, 'a', 2.3);
    std::cout << "i=" << i << " c=" << c << " d=" << d << '\n';
    return 0;
}

не компилируется на моем компьютере.Я получаю следующие сообщения об ошибках:

error: use of undeclared identifier 'i'
error: expected unqualified-id

и некоторые другие сообщения того же типа.

Я использую : Mac OS X 10.11.6 El Capitan, CLion,Я выбрал , выбрав опцию C ++ 17, когда создал проект, и мой CMakeList.txt имеет следующую строку: set(CMAKE_CXX_STANDARD 17).

clang --version - Apple LLVM версии 8.0.0 (clang-800.0.42.1)

Что мне нужно сделать, чтобы скомпилировать этот код?

1 Ответ

0 голосов
/ 04 января 2019

Как сказал @Eljay в комментариях, более старые версии clang не имели (не) полной поддержки C ++ 17.

Я воспроизвел эту проблему без CLion.

На компьютере 10.11.6 при использовании «Apple LLVM версии 8.0.0 (clang-800.0.42.1)»

clang++ -std=c++1z junk.cpp

выдает ошибки, о которых сообщил OP.(Обратите внимание, что -std=c++17 здесь не является допустимым вариантом - он появился позже)

На компьютере 10.14.2 с использованием «Apple LLVM версии 10.0.0 (clang-1000.10.44.4)»

clang++ -std=c++17 junk.cpp

компилируется без ошибки.

...