Ошибка is_assignable при использовании Boost 1.68 / LLVM / VS2017 - PullRequest
0 голосов
/ 19 сентября 2018

Я получаю следующую ошибку сборки при переключении на набор инструментов LLVM в VS2017 для сборки кода с использованием Boost 1.68.Код прекрасно работает с компилятором MSVC.1> C: \ boost_1_68_0 \ boost / type_traits / has_trivial_move_assign.hpp (49): ошибка: нет шаблона с именем is_assignable;Вы имели в виду 'std :: is_assignable'?1> C: \ boost_1_68_0 \ boost / type_traits / intrinsics.hpp (233): примечание: расширен из макроса 'BOOST_HAS_TRIVIAL_MOVE_ASSIGN'

1 Ответ

0 голосов
/ 30 ноября 2018

Я думаю, что ваша проблема здесь может быть __clang против __clang__ для идентификации компилятора.Clang имеет разные предопределенные макросы в зависимости от того, какой интерфейс используется.Из-за этой путаницы вы можете не включить заголовок boost/type_traits/is_assignable.hpp, который определяет is_assignable, который вам не хватает.Попробуйте это: В boost / type_traits / has_trivial_move_assign.hpp добавьте || defined(__clang__) строку, которая проверяет clang

#if defined(__GNUC__) || defined(__clang)
#include <boost/type_traits/is_assignable.hpp>

, чтобы сделать:

#if defined(__GNUC__) || defined(__clang) || defined(__clang__) 
#include <boost/type_traits/is_assignable.hpp>

Повышение должно включать is_assignable.hpp истроить.

...