Вопросы по теме 'initializer-list'

C++ вектор массивов
Почему это работает: std::pair<int, int> p = {1,2}; std::vector<std::pair<int, int>> vp = { {1,2}, {3,4} }; Но это не так? std::array<int, 2> a = {1,2}; // still ok std::vector<std::array<int, 2>> va =...
16110 просмотров
schedule 04.03.2022

Как построить объект std::array со списком инициализаторов?
Возможный дубликат: Как инициализировать массив элементов с помощью initializer_list? Вы можете просто создать std::array со списком инициализаторов: std::array<int, 3> a = {1, 2, 3}; // works fine Однако, когда я...
26179 просмотров
schedule 24.08.2022

Почему размер не является аргументом шаблона std::initializer_list?
std::initializer_list создается компилятором из списка инициализации, заключенного в фигурные скобки, и размер этого списка должен быть постоянной времени компиляции. Так почему же комитет решил исключить размер из аргументов шаблона? Возможно,...
2008 просмотров
schedule 15.04.2024

Вызов перегруженного конструктора из списка инициализации конструктора
В приведенном ниже коде я намерен вызвать один из двух перегруженных конструкторов для kap (класс opacity ) в зависимости от того, какие аргументы передаются объекту класса material : class opacity{ private: int mode; double kap_const;...
2879 просмотров

initializer_list и семантика перемещения
Могу ли я перемещать элементы из std::initializer_list<T> ? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it !=...
20631 просмотров

Оптимизация за счет списка инициализаторов конструктора
Конструкторы должны инициализировать все свои объекты-члены через список инициализаторов, если это возможно. Это более эффективно, чем создание конструкторов с помощью присваивания внутри тела конструктора. Может ли кто-нибудь объяснить,...
3687 просмотров

Сделать математический векторный класс осведомленным о списке инициализаторов
У меня есть математический векторный класс, который разработан следующим образом: class Vector3D { public: float x; float y; float z; public: Vector3D() {} Vector3D(float xx, float yy, float zz = 0.0) { x=xx; y=yy; z=zz; }...
767 просмотров
schedule 21.03.2022

Что может пойти не так, если инициализация списка копирования допускает явные конструкторы?
В стандарте C++, §13.3.1.7 [over.match.list], указано следующее: При инициализации списка копирования, если выбран конструктор explicit , инициализация имеет неправильный формат. Вот почему мы не можем сделать, например, что-то вроде...
4834 просмотров

gcc: отсутствие предупреждения о порядке инициализации в конструкторах
Должен ли gcc предупреждать о порядке инициализации переменных-членов a и b в классе C? В основном объект b инициализируется, и его конструктор вызывается перед объектом A. Это означает, что b использует неинициализированный a . #include...
1129 просмотров
schedule 04.06.2022

Конструктор С++ предотвращает успешную компиляцию
Я столкнулся со странной проблемой на С++, и я был бы признателен за объяснение. Этот фрагмент не компилируется: size_t bufLength = 18; char* buffer = new char[bufLength]; auto_array_ptr<char> pBuffer1 = buffer; // fails...
355 просмотров
schedule 24.01.2023

БОЛЬШАЯ ошибка VС++? Почему список-инициализаторов не инициализирует структуру по значению?
Стандарт С++ 11 8.5.4.3 гласит: «Если в списке инициализаторов нет элементов, а T является типом класса с конструктором по умолчанию, объект инициализируется значением». struct A { int get() { return i; } private: int i; }; int...
335 просмотров

Можно ли перегружать операторы для литералов initializer_list?
Я пытаюсь перегрузить операторы для std::initializer_list , но следующее не компилируется ни в GCC 4.7.2, ни в Clang 3.2: #include <initializer_list> void operator+(const std::initializer_list<int>&, const...
954 просмотров

Являются ли множественные мутации в списках инициализаторов неопределенным поведением?
Меня интересуют списки инициализаторов и точки последовательности. Некоторое время назад я читал, что порядок оценки в списках инициализаторов слева направо. Если это так, то должна быть какая-то точка следования между точками оценки, я не прав?...
758 просмотров

читать данные в списке инициализации
При создании экземпляра класса я хотел бы прочитать данные из файла и обработать их в несколько объектов класса. То, что я сделал до сих пор (и работает хорошо), это myData::myData(const std::string & file): data1_(this->read(file)),...
427 просмотров
schedule 30.08.2022

Ошибка «Избыточные элементы в инициализаторе структуры» с униформной инициализацией С++ 11
Я удивлен следующей ошибкой компилятора: template <typename T> struct A { A(T t): t_{t} {} T t_; }; struct S { }; int main() { A<S> s{S{}}; } Ошибка (с лязгом): test.cpp:4:16: error: excess elements in struct...
4386 просмотров

std :: initializer_list без cbegin () / cend ()
Если элементы в std::initializer_list всегда являются константными значениями, почему у нас есть метод шаблона, такой как begin()/end() , а не cbegin()/cend() ? Эти имена (по соглашению, по сравнению, например, с std::vector ) могут...
746 просмотров
schedule 03.10.2022

Ошибка вывода аргумента шаблона Variadic при передаче списков инициализаторов
Bar содержит std::vector из std::pair из std::array из FooValueAdaptor из. FooValueAdaptor неявно преобразует int в bool в FooValue , что не имеет большого смысла в этом надуманном примере, но имеет смысл в моем приложении. Я...
745 просмотров

Назначение свойству только для чтения в списке инициализаторов
Может кто-нибудь сказать мне, какого черта он компилируется? namespace ManagedConsoleSketchbook { public interface IMyInterface { int IntfProp { get; set; } } public class MyClass...
835 просмотров
schedule 07.05.2023

Java-подобные Arrays.asList() в С++
Поддерживает ли С++ либо STL, либо существует внешняя библиотека, поддерживающая Arrays.asList() ? Типичное использование private ArrayList<String> lexeme = new ArrayList<String>(Arrays.asList(" ", ",", "(", ")", ";", "=", ".",...
574 просмотров
schedule 11.06.2022

С++ 11 ошибка initializer_list
Рассмотрим код: #include <iostream> #include <vector> #include <string> int main() { std::vector<std::string> v{{"awe", "kjh"}}; // not v{"awe", "kjh"} std::cout << v.size() << std::endl; return...
225 просмотров