Я пытаюсь запустить свою программу без использования boost
, но не могу найти альтернативы некоторым полезным шаблонам. А именно, я не могу найти boost::optional
-likewise шаблон в стандартной библиотеке. Есть ли какая-то стандартная альтернатива для boost::optional
(C++ 11 или где-то еще)?boost :: дополнительная альтернатива в стандартной библиотеке C++
ответ
Короткий ответ: Нет
Длинный ответ: Ролл свой собственный согласно повышающего спецификации. Документация достаточно полная, и код не такой сложный, но для этого все еще требуются навыки среднего уровня C++.
Чтобы уточнить этот ответ, C++ 14, к сожалению, не отправил std::optional
. Текущее предложение (редакция 5) - N3793, и ожидается, что оно будет отправлено в виде отдельной технической спецификации или станет частью C++ 17.
В некоторых средах, к сожалению, политически невозможно использовать boost. –
Вы задумывались над [извлечением только факультативного из boost] (http://www.boost.org/doc/libs/1_53_0/tools/bcp/doc/html/index.html)? – Nova
Зачем пытаться избавиться от зависимостей boost? О, позвольте мне подсчитать причины ... – einpoklum
В настоящее время существует a proposal for C++14 (или C++ 17). Так что ответ (возможно) еще не :).
По-видимому, он только что был отклонен C++ 14 в Технический Спецификация (см. Http://en.cppreference.com/w/cpp/utility/optional) :( – Nova
Не так ли, что «голосование» в комитете C++ говорит, что на самом деле означает «голосование за»? –
Как pmr explained, это невозможно прямо сейчас, и не будет, пока C++ 17 не будет.
Однако вы должны иметь возможность использовать этот single header library на github в качестве замены при замене форсированного или std дополнительного. Он не имеет зависимостей (кроме компилятора C++ 11/C++ 14).
C++ 0x == C++ 11, удалено из вопроса. :) – Xeo
Вы можете использовать указатель с нулевым значением как дешевую и небезопасную альтернативу 'boost :: optional'. Или, может быть, 'std :: unique_ptr', где значение 0 (null_ptr, NULL) интерпретируется как неинициализированный необязательный тип. Помимо недостатков, хорошо, что вам не нужно ничего внедрять; но просто держите абстракцию в виду. Об этом говорится в руководстве по ускорению http://www.boost.org/doc/libs/1_53_0/libs/optional/doc/html/boost_optional/development.html#boost_optional.development.the_interface. В результате , вы могли бы заменить необязательный T * в некоторых ситуациях, но не всегда " –
alfC