2014-12-12 6 views
1

Я пытаюсь запустить старый проект в Xcode, который написан на C++, но я получаю несколько ошибок с помощью библиотеки boost.Boost: Неизвестный тип name 'reference_type_of_temporary_wrapper'

Первый был this вопрос, но второй комментарий предоставил хороший обходной путь, и он сработал.

Тогда я сделал чистую сборку снова и теперь я получаю ошибку, которая в названии, а именно:

Unknown type name 'reference_type_of_temporary_wrapper' 

я не могу найти какое-либо решение по этому вопросу. У кого-нибудь есть предложения?

Я использую:

  • Mac OSX 10,10

  • Xcode версии 6.1 (в C++ язык диалектом проекта и C++ стандартной библиотеки устанавливаются компилятором по умолчанию)

  • Boost, 1,56

+0

Это не так много информации ... Тип, как представляется, определяется в 'boost/optional.hpp'. Не видя какого-либо источника или больше ошибки, вы не можете помочь вам больше, чем это. – wakjah

+0

Привет, к сожалению, я не могу поделиться источником, потому что он частный, а также очень большой, но мне удалось преодолеть его временным обходным путем. Я отправлю его в качестве ответа. – Silex

ответ

0

Мне удалось пройти эту ошибку, wi й временный обходной путь. Это не самое хорошее решение возможно, но работает ...

То, что я сделал это просто закомментировать эти строки из повышающего/optional.hpp:

// reference_type_of_temporary_wrapper operator *() && { return boost::move(this->get()) ; } 

// reference_type_of_temporary_wrapper value() && 
// { 
//  if (this->is_initialized()) 
//  return boost::move(this->get()) ; 
//  else 
//  throw_exception(bad_optional_access()); 
// } 
2

Существует уже принят ответ, но он обходит проблема, на самом деле не исправляет ее, поэтому я подумал, что отвечу на более современный ответ для этих поисков.

В более поздних версиях Boost существуют определения препроцессора, которые вы можете передать в свое приложение, которое отключит некоторые функции C++ 11. Для конкретной ошибки в этой должности, передавая это компилятор устраняет проблему (GCC здесь):

-DBOOST_NO_CXX11_REF_QUALIFIERS 

Там есть хороший длинный список на this SO question всех C++ 11, связанных с определениями подталкивания препроцессора, которые могут быть установленным.

Смежные вопросы