Вопросы по теме 'list-initialization'
Инициализация скаляров фигурными скобками
В C и C ++ можно инициализировать массивы и структуры, используя фигурные скобки:
int a[] = {2, 3, 5, 7};
entry e = {"answer", 42};
Однако в выступлении 2007 года Бьярн упоминает, что этот синтаксис также работает для скаляров. Я...
1205 просмотров
schedule
25.10.2021
Почему автоматическое определение типа и вывод типа шаблона различаются для инициализаторов в фигурных скобках?
Я понимаю, что для инициализатора в скобках auto выведет тип std::initializer_list , в то время как определение типа шаблона не удастся:
auto var = { 1, 2, 3 }; // type deduced as std::initializer_list<int>
template<class T> void...
1442 просмотров
schedule
26.11.2021
Проблема с инициализацией объекта из списка инициализаторов
У меня такой код:
class A {
public:
A(std::vector<std::shared_ptr<int>>){}
};
auto x = std::make_shared<int>(0);
auto y = std::make_shared<int>(1);
auto list = {x, y};
auto res =...
155 просмотров
schedule
05.10.2021
При инициализации списка требуется сужающее преобразование
Я читал о сужении конверсии на справочном сайте cpp. Я как бы понял это, но я не понимаю, почему ошибка присутствует только в первой строке.
long double ld = 3.1415926536;
int a{ld}, b = {ld}; // error: narrowing conversion required...
179 просмотров
schedule
20.10.2021
Как количество фигурных скобок влияет на равномерную инициализацию?
Рассмотрим следующий фрагмент кода:
#include <iostream>
struct A {
A() {}
A(const A&) {}
};
struct B {
B(const A&) {}
};
void f(const A&) { std::cout << "A" << std::endl; }
void f(const B&) { std::cout...
929 просмотров
schedule
17.11.2021
Почему для передачи инициализированного фигурной скобкой временного адреса по адресу требуется явное приведение к тому же типу в MSVS
Я пытался сделать свой код менее раздутым при работе с Windows API, заменив двухстрочные, мало чем отличающиеся
TEMP t{0,1,2}; // let's say it's struct TEMP {int a; int b; int c}
SomeVeryVerboseFunctionName(&t);
с остротами...
248 просмотров
schedule
18.03.2022
C++ — унифицированный инициализатор с std::string
Я пытаюсь использовать универсальный инициализатор со строковым классом С++. Ниже приведен код:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1 {"aaaaa"};
string str2 {5, 'a'};
string...
1506 просмотров
schedule
12.05.2022
Инициализация списка boost::asio::io_context
Я смотрю на пример из boost::beast и вижу, что они инициализируют свой io_context следующим образом:
// The io_context is required for all I/O
net::io_context ioc{threads};
Думал опечатка, но компилируется. Поэтому я начал гуглить, зная,...
62 просмотров
schedule
24.06.2022
Какие языковые правила позволяют C++11 сделать вывод, что это initializer_list пар?
В С++ 11 кажется допустимым инициализировать std::map<std::string, int> следующим образом:
std::map<std::string, int> myMap = {
{ "One", 1 },
{ "Two", 2 },
{ "Three", 3 }
};
Интуитивно это имеет смысл —...
369 просмотров
schedule
08.09.2022
Инициализировать агрегат как член класса
В этом коде:
#include <array>
#include <cstdint>
struct K {
std::array<char, 4> a;
std::uint8_t b;
};
const K k1 = { {'T', 'e', 's', 't'}, 1 };
class X {
const K k2 = { {'A', 'b', 'c', 'd'}, 2 };
};
Я могу...
134 просмотров
schedule
09.09.2022
Исключение фигурной скобки в std::array‹std::vector›
Я компилирую, используя g++ для С++ 17. У меня есть следующее:
std::array<std::vector<int>, 2> v = {{ {1,2}, {3,4} }};
Я не понимаю, почему если я удалю двойные фигурные скобки для массива, он больше не будет работать....
327 просмотров
schedule
30.09.2022
Вложенность Boost.Assignment `map_list_of`
Можно ли изменить эту инициализацию С++ 11:
const std::map<int, std::map<int, std::string>> test =
{{1,
{{1, "bla"},
{2, "blie"}
}
},
{3,
{{1, "ha"},
{2, "hie"}
}
}
};
В какую-то форму с...
2982 просмотров
schedule
03.04.2023
Можно ли не использовать инициализацию списка для частных членов?
struct A
{
private:
int a, b, c;
};
int main()
{
A a1{};
A a2 = {};
return 0;
}
Код был скомпилирован VC++ 2012 (с последним обновлением «CTP за ноябрь 2012»).
Я ожидаю, что a1 и a2 инициализируются нулем, но это не так. a1...
165 просмотров
schedule
18.04.2023
Агрегатная инициализация структуры с меньшим количеством предложений, почему она инициализирует все?
Если у меня есть общая структура Linux, например:
struct sockaddr_in
{
sa_family_t sin_family;
in_port_t sin_port;
struct in_addr sin_addr;
unsigned char __pad[__SOCK_SIZE__ - sizeof(short int)...
437 просмотров
schedule
14.03.2023
Почему этот конструктор initializer_list является жизнеспособной перегрузкой?
#include <iostream>
#include <string>
#include <initializer_list>
class A
{
public:
A(int, bool) { std::cout << __PRETTY_FUNCTION__ << std::endl; }
A(int, double) { std::cout << __PRETTY_FUNCTION__ <<...
297 просмотров
schedule
15.11.2022
почему эта переменная не выводится как initializer_list в g ++ в C ++ 14?
Рассмотрим следующую программу:
#include <iostream>
int main()
{
int n = 3;
int fact = 1;
for(auto i{1};i<=n;i++)
fact*=i;
std::cout<<"fact of "<<n<<" is "<<fact;
}
Он...
623 просмотров
schedule
12.01.2023
Конструктор копирования C++ вызывается вместо initializer_list‹›
На основе этого кода
struct Foo
{
Foo()
{
cout << "default ctor" << endl;
}
Foo(std::initializer_list<Foo> ilist)
{
cout << "initializer list" << endl;
}
Foo(const Foo&...
993 просмотров
schedule
26.03.2023
Действительно ли это двусмысленно?
Итак, я знаю, что фигурные скобки в коде могут означать больше, чем просто initializer_list : Что такое список, заключенный в фигурные скобки, если не список инициализаторов?
Но что они должны использовать по умолчанию ?
Например,...
200 просмотров
schedule
06.04.2023
Неоднозначный вызов конструктора с инициализацией списка
struct A {
A(int) {}
};
struct B {
B(A) {}
};
int main() {
B b({0});
}
Построение b дает следующие ошибки:
In function 'int main()':
24:9: error: call of overloaded 'B(<brace-enclosed initializer list>)' is ambiguous...
1033 просмотров
schedule
10.07.2023
Инициализация члена в перегруженном конструкторе
У меня есть основное семантическое сомнение, которое я не смог прояснить. Прежде чем изложить проблему, я напишу минимальный код, чтобы ясно объяснить ее.
В константах.hpp
#pragma once
enum class OpenglESVersion{
OES1,
OES2
};
В...
274 просмотров
schedule
25.04.2023