Я работал над переносом нашей кодовой базы на C ++ 17 и теперь заставил ее работать как с g ++, так и clang локально.
Однако у меня возникают ошибки компиляции на Travis с обоимиClang 6.0 и Clang 5.0, которые предположительно поддерживают C ++ 17.
Более того, компиляция одного и того же кода на моем компьютере с помощью Clang 6.0 завершается успешно.
Соответствующий код, которыйсбой - возврат кортежа при инициализации фигурной скобки, например:
return {str.str(), key};
Я получаю конкретное сообщение об ошибке:
/home/travis/build/turtlecoin/turtlecoin/src/Mnemonics/Mnemonics.cpp:51:20: error: chosen constructor is explicit in copy-initialization
return {str.str(), key};
^~~~~~~~~~~~~~~~ /usr/bin/../lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/tuple:539:19: note: explicit constructor declared here
constexpr tuple(_U1&& __a1, _U2&& __a2)
Кажется, он использует clang-6.0, как и ожидалось:
-- Check for working C compiler: /usr/bin/clang-6.0
-- Check for working C compiler: /usr/bin/clang-6.0 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/clang++-6.0
-- Check for working CXX compiler: /usr/bin/clang++-6.0 -- works
Мой местный лязг работает нормально:
clang version 6.0.1 (tags/RELEASE_601/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Это проблема с Трэвисом?Clang?Мой код?
Если это поможет, полный журнал сборки находится здесь: https://travis -ci.org / turtlecoin / turtlecoin / jobs / 437857481
edit: Forgotчтобы упомянуть - я использую флаги для включения режима C ++ 17, в моих CMakeLists:
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
Спасибо.