Вопросы с тегом «c++11»

210
Как включить поддержку C ++ 11 / C ++ 0x в Eclipse CDT?

Eclipse 3.7.1 CDT 1.4.1 GCC 4.6.2 Это пример фрагмента кода C ++ 11: auto text = std::unique_ptr<char[]>(new char[len]); Редактор Eclipse жалуется на: Function 'unique_ptr' could not be resolved Компиляция Makefile работает отлично. Как заставить Eclipse перестать жаловаться на подобные...

210
Передача лямбда-захвата в качестве указателя на функцию

Можно ли передать лямбда-функцию в качестве указателя на функцию? Если это так, я должен что-то делать неправильно, потому что я получаю ошибку компиляции. Рассмотрим следующий пример using DecisionFn = bool(*)(); class Decide { public: Decide(DecisionFn dec) : _dec{dec} {} private: DecisionFn...

205
Может ли современный C ++ получить производительность бесплатно?

Иногда утверждают, что C ++ 11/14 может повысить производительность даже при простой компиляции кода C ++ 98. Обоснование обычно происходит в соответствии с семантикой перемещения, поскольку в некоторых случаях конструкторы rvalue генерируются автоматически или теперь являются частью STL. Теперь...

198
неопределенная ссылка на 'std :: cout'

Это будет пример: #include <iostream> using namespace std; int main() { cout << "Hola, moondo.\n"; } Выдает ошибку: gcc -c main.cpp gcc -o edit main.o main.o: In function `main': main.cpp:(.text+0xa): undefined reference to `std::cout' main.cpp:(.text+0xf): undefined reference to...

197
Зачем использовать функции, не являющиеся членами начала и конца, в C ++ 11?

Каждый стандартный контейнер имеет beginи endспособ возвращения итераторов для этого контейнера. Тем не менее, C ++ 11, по- видимому , введенные свободные функции называются std::beginи std::endкоторые называют beginи endчлены функции. Итак, вместо того, чтобы писать auto i = v.begin(); auto e =...

193
Имеет ли смысл статическая переменная constexpr внутри функции?

Если у меня есть переменная внутри функции (скажем, большой массив), имеет ли смысл объявлять ее одновременно staticи constexpr? constexprгарантирует, что массив создается во время компиляции, так что staticбудет бесполезно? void f() { static constexpr int x [] = { // a few thousand elements }; //...

192
Какие функции Boost перекрываются с C ++ 11?

Я положил свои навыки C ++ на полку несколько лет назад, и теперь, когда они мне снова нужны, ситуация изменилась. Сейчас у нас есть C ++ 11, и я понимаю, что он перекрывает многие функции Boost. Есть ли какая-то сводка, где лежат эти перекрытия, какие библиотеки Boost станут унаследованными,...

192
Почему std :: list :: reverse имеет сложность O (n)?

Почему обратная функция для std::listкласса в стандартной библиотеке C ++ имеет линейное время выполнения? Я думаю, что для двусвязных списков обратная функция должна была быть O (1). Изменение двусвязного списка должно включать переключение указателей головы и...

192
Какие идиомы C ++ устарели в C ++ 11?

С новым стандартом появляются новые способы ведения дел, и многие из них более хороши, чем старые, но старый способ все еще в порядке. Также ясно, что новый стандарт официально не очень устарел по причинам обратной совместимости. Итак, вопрос, который остается: Какие старые способы кодирования...

189
Какой смысл в noreturn?

[dcl.attr.noreturn] предоставляет следующий пример: [[ noreturn ]] void f() { throw "error"; // OK } но я не понимаю в чем смысл [[noreturn]], потому что возвращаемый тип функции уже есть void. Итак, в чем смысл этого noreturnатрибута? Как это должно быть...

187
Как мне вызвать :: std :: make_shared в классе только с защищенными или закрытыми конструкторами?

У меня есть этот код, который не работает, но я думаю, что цель ясна: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &)...

186
Неопределенная ссылка на статический constexpr char []

Я хочу иметь static const charмассив в моем классе. GCC пожаловался и сказал мне, что я должен использовать constexpr, хотя теперь он говорит мне, что это неопределенная ссылка. Если я сделаю массив не членом, он будет скомпилирован. Что происходит? // .hpp struct foo { void bar(); static constexpr...

185
std :: auto_ptr в std :: unique_ptr

С появлением нового стандарта (и частей, уже доступных в некоторых компиляторах), новый тип std::unique_ptrдолжен заменить его std::auto_ptr. Их использование в точности совпадает (поэтому я могу выполнить глобальный поиск / замену в моем коде (не то, чтобы я это делал, но если бы я это сделал))...

183
Насколько хорошо Юникод поддерживается в C ++ 11?

Я читал и слышал, что C ++ 11 поддерживает Unicode. Несколько вопросов по этому поводу: Насколько хорошо стандартная библиотека C ++ поддерживает Unicode? Делает std::stringто, что должен? Как мне это использовать? Где потенциальные проблемы?...

179
Является ли идиома safe-bool устаревшей в C ++ 11?

Этот ответ @R. Мартиньо Фернандес показывает, что идиома безопасного булла в C ++ 11 явно устарела, так как ее можно заменить простым explicit operator bool() const; согласно стандартной цитате в ответе §4 [conv] p3: Выражение e может быть неявно преобразовано в тип Tтогда и только тогда, когда...

175
Можно ли использовать std :: string в constexpr?

Использование C ++ 11, Ubuntu 14.04, GCC по умолчанию . Этот код не работает: constexpr std::string constString = "constString"; ошибка: тип 'const string {aka const std :: basic_string}' переменной constexpr 'constString' не является литералом ... потому что ... 'std :: basic_string' имеет...