c++11
Я понимаю, правильный способ захвата this (для изменения свойств объекта) в лямбде выглядит следующим образом: auto f = [this] () { /* ... */ }; но мне любопытно, что я видел следующую особенность: class C { public: void foo() { // auto f = [] () { // this not captured ...
В C++ вы можете объявить лямбды, например, так: int x = 5; auto a = [=]() mutable { ++x; std::cout << x << 'n'; }; auto b = [&]() { ++x; std::cout << x << 'n'; }; оба позвольте мне изменить x, Так в чем же разница?...
у меня есть класс, содержащий класс enum. class Shader { public: enum class Type { Vertex = GL_VERTEX_SHADER, Geometry = GL_GEOMETRY_SHADER, Fragment = GL_FRAGMENT_SHADER }; //... затем, когда я реализую следующий код в другом классе... std::unordered_map<Shader::T...
рассмотрим следующую программу: #include <string> #include <vector> using namespace std; struct T { int a; double b; string c; }; vector<T> V; int main() { V.emplace_back(42, 3.14, "foo"); } не работает: $ g++ -std=gnu++11 ./test.cpp In file included from /usr/include...
когда у нас есть, struct E { enum E_ { HELLO }; }; // 'E' is inheritable тогда зачем нам это нужно, enum class E { HELLO }; // 'E' is not inheritable ИМО 2-й версии не предлагает больше возможностей, чем 1-й. Я не думаю, что enum class вводится только для сохранения 2 фигурных скобок {};! Я упускаю как...
Я использую c++11, но также некоторые библиотеки, которые не настроены для него, и нуждаются в некотором преобразовании типа. В частности мне нужен способ конвертировать std::__cxx11::string обычных std::string, но погуглив я не могу найти способ сделать это и положить (string) спереди не работает. если я не...
отсутствие std::array<T,size>::array(const T& value); недосмотр? Это кажется мне очень полезным, и динамические контейнеры (например std::vector) есть аналогичный конструктор. Я полностью осознаю std::array<T,size>::fill(const T& value); но это не конструктор, и память будет обнулен...
рассмотрим следующую встроенную функцию: // Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } и эквивалентная версия constexpr: // Cons...
у меня есть моя первая попытка использовать C++11 unique_ptr; я заменяю полиморфный необработанный указатель внутри моего проекта, который принадлежит одному классу, но передается довольно часто. раньше у меня были такие функции, как: bool func(BaseClass* ptr, int other_arg) { bool val; // plain ordinar...
какова нотация для объявления лямбда-переменной или параметра функции без использования auto или шаблоны? Есть ли способ сделать это? Или компилятор определяет уникальный объект класса для каждой лямбды, имя которой неизвестно программисту до времени компиляции? Если да, то почему? Разве они не могут быть про...