Вопросы по теме 'initializer-list'
списки инициализаторов c++ и вариативные шаблоны
Я хотел создать массив:
template < typename T, typename ... A > struct a {
T x [1 + sizeof... (A)];
a () = default;
a (T && t, A && ... y) : x { t, y... } {}
};
int main () {
a < int, int > p { 1, 1 }; // ok...
998 просмотров
schedule
27.09.2023
C++0x: разрешение перегрузки
В Standard-Text есть пример в 8.5.4 (3) List-initialization [dcl.init.list]
struct S {
S(std::initializer_list<double>); // #1
S(const std::string&); // #2
};
const S& r1 = { 1, 2, 3.0 }; // OK: invoke #1...
227 просмотров
schedule
23.10.2022
Могу ли я инициализировать список векторов типа "только перемещение"?
Если я пропущу следующий код через мой снимок GCC 4.7, он попытается скопировать unique_ptr s в вектор.
#include <vector>
#include <memory>
int main() {
using move_only = std::unique_ptr<int>;...
18136 просмотров
schedule
08.01.2024
Структура с `initializer_list` ctor внутри союза?
У меня есть структура POD, но для удобства я хочу, чтобы она имела std::initializer_list ctor. Ctor по умолчанию, ctor копирования и dtor являются неявными. Однако кажется, что использование initializer_list ctor дисквалифицирует структуру как...
534 просмотров
schedule
14.02.2022
Почему 'std::vector‹int› b{2};' создать 1-элементный вектор, а не 2-элементный?
Я играл с С++ 11 последние несколько дней и придумал кое-что странное.
Если я хочу равномерно инициализировать int:
int a{5};
Но если я сделаю то же самое с std::vector:
std::vector<int> b{2};
Создает не массив из двух...
5899 просмотров
schedule
04.12.2023
C++: инициализация элемента ссылки для объекта, созданного в списке инициализации
Рассмотрим следующий код:
class Foo {
Foo() {}
};
class Bar {
Foo &Foo_ref;
Bar() : Foo_ref() {}
};
Соблюдаю как есть, получаю ошибку:
tmp.cc: In constructor Bar::Bar():
tmp.cc:7: error: value-initialization of Foo&...
8674 просмотров
schedule
13.04.2024
Безопасно ли перемещать элементы списка инициализаторов?
Возможный дубликат: initializer_list и семантика перемещения
В этом коде:
#include <vector>
#include <initializer_list>
template<typename T>
class some_custom_container : public std::vector<T>
{
public:...
1773 просмотров
schedule
02.02.2022
вызов перегруженного ‹списка инициализаторов в фигурных скобках› неоднозначен, как с этим бороться?
Я действительно не понимаю этого, я думал, что компилятор сначала выполняет то, что в фигурных скобках, а затем отдает результат наиболее подходящей функции. Здесь похоже, что он дает функции список инициализаторов для работы с ней...
#include...
5618 просмотров
schedule
28.02.2024
ошибка Невозможно открыть включаемый файл, но он не включен в код
Я получил ошибку после установки ноябрьской CTP в Visual Studio 2012. Ошибка находится в unordered_set.hpp библиотеки повышения. Но я нигде в коде не включил unordered_set или initializer_list . Я использовал boost только в одном файле, и я...
1902 просмотров
schedule
11.02.2024
Есть ли короткий способ написать i в диапазоне (100) на С++?
Если я правильно понял, я могу использовать это для перебора фиксированного диапазона:
for(int i: {1, 2, 3, 4, 5})
do_sth(i);
И это то же самое:
vector<int> v{1, 2, 3, 4, 5};
for(int i: v)
do_sth(i);
Но что, если я хочу...
459 просмотров
schedule
17.02.2023
инициализация класса или структуры атомарным массивом
Как написать пользовательский копирующий конструктор класса/структуры с массивом атомарных переменных? Например, следующий код не компилируется
struct foo
{
std::array<std::atomic_int,3> a;
foo() = default;
foo(const...
1452 просмотров
schedule
06.06.2023
сужение преобразования из 'int' в 'double' и инициализацию массива
Следующее
int i = 0;
double d{i};
выдает ошибку (в clang) или предупреждение (в gcc) о narrowing conversion from 'int' to 'double' . Меня поразило, что это действительно сужается, по крайней мере, до тех пор, пока я не увидел сужающее...
1502 просмотров
schedule
21.09.2022
Определение операторов для классов библиотеки std
Я пользователь Windows 7 и использую Visual Studio Express 2012. Используемый компилятор - это компилятор, поставляемый с программой. Конкретная проблема, с которой я столкнулся, заключается в том, что initializer_list еще не поддерживается для...
58 просмотров
schedule
11.12.2022
Синтаксис списка инициализаторов в списке инициализаторов членов с использованием С++ 11
Я прошел через « A Tour of C++ ', и Бьярне использует C++11. Функция списка инициализаторов при инициализации члена в конструкторе, например (с использованием фигурных скобок):
A a;
B b;
Foo(Bar bar):
a{bar.a}, b{bar.b}
{}
Однако это не...
2039 просмотров
schedule
24.03.2024
Почему `std::initializer_list` не определен как литеральный тип?
Это продолжение этого вопроса: Это законно ли объявлять объект constexpr initializer_list? .
Начиная с C++14, все методы класса std::initializer_list помечены знаком constexpr . Кажется естественным иметь возможность инициализировать...
3335 просмотров
schedule
10.09.2023
Инициализировать массив с помощью initializer_list?
Это вообще возможно?
#include <array>
#include <initializer_list>
struct A
{
A ( std::initializer_list< int > l )
: m_a ( l )
{
}
std::array<int,2> m_a;
};
int main()
{
A a{ 1,2 };
}
Но...
2262 просмотров
schedule
28.04.2022
Инициализатор конструктора С++ 11 с другим синтаксисом
Я оказался на этой странице в справочниках.
Я немного запутался с этим примером:
class X {
int a, b, i, j;
public:
const int& r;
X(int i)
: r(a) // initializes X::r to refer to X::a
, b{i} // initializes X::b to...
44 просмотров
schedule
07.10.2023
Почему двойные пустые фигурные скобки { { } } создают std::initializer_list‹double› с одним элементом, а не с нулем?
У меня есть следующий конструктор:
MyItem(std::initializer_list<double> l) {
std::cout << "l size " << l.size() << ")" << std::endl;
}
Который позже вызывается двойными фигурными скобками:
MyItem{{}}...
934 просмотров
schedule
14.05.2024
как перемещать элементы initializer_list?
Допустим, у вас есть переменная типа std::vector<std::string> , и вы инициализируете ее списком инициализаторов:
using V = std::vector<std::string>;
V v = { "Hello", "little", "world", "of", "move", "semantics" };
Компилятор...
1519 просмотров
schedule
13.01.2023
Преобразование std::initializer_list в конструкторах
Я новичок в С++ 11, и мне было интересно, как этот код работает внутри:
class MyClass
{
public:
MyClass(int a, double b) {
cout << "ctor()" << endl;
}
};
int main()
{
MyClass i1{4, 7};
return...
87 просмотров
schedule
08.11.2023