Вопросы по теме 'list-initialization'
Почему в стандарте проводится различие между инициализацией прямого списка и инициализацией списка копирования?
Мы знаем, что T v(x); называется прямой инициализацией , а T v = x; называется инициализацией копирования , что означает, что он создаст временный T из x , который будет скопирован / перемещен в v (что, скорее всего, опущено).
Для...
3581 просмотров
schedule
08.05.2022
Влияет ли знак равенства на инициализацию фигурной скобки? например. «T a = {}» против «T a {}»
Вот два способа инициализировать переменную в C++11:
T a {something};
T a = {something};
Я проверил эти два во всех возможных сценариях и не заметил разницы. Этот ответ предполагает, что между ними есть тонкая разница:
Для...
2157 просмотров
schedule
28.08.2022
Почему Clang и VS2013 принимают перемещаемые аргументы по умолчанию, инициализированные скобками, но не GCC 4.8 или 4.9?
Как следует из названия, у меня есть короткая демонстрационная программа, которая компилируется всеми этими компиляторами, но при запуске с помощью gcc 4.8 и gcc 4.9 сбрасывает дамп ядра:
Есть идеи, почему?
#include <unordered_map>...
1666 просмотров
schedule
02.07.2022
Списки инициализации в фигурных скобках и порядок вывода типа шаблона функции
У меня есть вопрос относительно процедуры вывода типа параметра шаблона функции.
Возьмите этот пример:
#include <vector>
#include <sstream>
#include <string>
#include <iterator>
#include <fstream>
int main()
{...
390 просмотров
schedule
21.10.2022
Не удается преобразовать тип при инициализации
Я думаю, что я что-то пропустил, и я не знаю, что именно. Давайте посмотрим на фрагмент кода.
template <typename T>
struct Foo {
Foo (int n, int p, string s, T t = {})
: m_n {n}, m_p {p}, m_s {s}, m_t {t}
{}
const int...
6180 просмотров
schedule
13.11.2023
Как построить вектор с уникальными указателями
Я пытаюсь построить вектор с unique_ptr. Но я не нахожу прямого пути. Следующий код не компилируется. Ошибка: вызов неявно удаленного конструктора копирования 'std::__1::unique_ptr >':
#include <iostream>
#include <memory>
#include...
3985 просмотров
schedule
23.02.2024
Вывод типа std::initializer_list
Недавно я написал очень простой класс.
class C
{
public:
void AddString(std::initializer_list<std::pair<const char*,int>> x)
{
//irrelevant
}
};
int main()
{
C c;
c.AddString({ {"1",1},...
607 просмотров
schedule
09.09.2022
Разрешение перегрузки, когда аргумент является списком инициализаторов, а параметр является ссылкой
struct A { A(int);};
struct B { explicit B(A); B(const B&);};
B b({0});
Я задал вопрос Разрешение перегрузки дает разные результаты между gcc и clang и @Johannes Schaub - litb объяснили действующие правила. Но у меня остались вопросы по...
190 просмотров
schedule
07.12.2022
Удален конструктор по умолчанию. Объекты все еще могут быть созданы иногда
Наивный, оптимистичный и о ... так неправильный взгляд на унифицированный синтаксис инициализации С ++ 11
Я думал, что, поскольку объекты пользовательского типа C ++ 11 должны быть созданы с новым синтаксисом {...} вместо старого синтаксиса...
9841 просмотров
schedule
10.04.2023
Инициализация ссылочного члена в классе С++ 11 делает неверную копию
Вот моя ситуация:
У меня есть класс с переменной-членом ссылки const.
Я пытаюсь инициализировать эту переменную-член из константной ссылки.
Моя проблема заключается в том, что когда переменная-член инициализируется в классе, создается...
116 просмотров
schedule
15.08.2022
Инициализировать частный агрегат из скобочного списка инициализации
Если я попытаюсь скомпилировать
class triangle
{
private:
std::array<std::array<double, 2>, 3> m_vertices;
};
triangle const unit_triangle{ { { { 0, 0 }, { 1, 0 }, { 0, 1 } } } };
я получаю сообщение об ошибке
не может...
80 просмотров
schedule
02.12.2022
Почему инициализация списка позволяет преобразовывать значения типа double в значения с плавающей запятой?
Инициализация списка (синтаксис {...} ) не позволяет сужать преобразования. Например, попытка инициализации списка int i с 3.14f содержит ошибку компиляции, поскольку преобразование значений с плавающей запятой в целые числа сужается:...
386 просмотров
schedule
06.06.2022
Почему реализация make_tuple не возвращается через инициализацию фигурной скобки?
Чтобы понять вопрос, сначала прочитайте этот ответ .
Я проверил различные исторические реализации make_tuple (включая версии clang 2012 года). До C++17 я ожидал, что они будут return {list of values ... } , но все они создают кортеж перед его...
399 просмотров
schedule
15.04.2022
Инициализация списка С# с использованием списка вместо списка инициализации
Моя проблема касается синтаксиса синтаксиса инициализации объекта в C#, в частности синтаксиса для инициализации свойства списка.
JSchema библиотеки Newtonsoft .NET Schema предоставляет свойство с именем Enum , которое является...
749 просмотров
schedule
24.01.2023
Почему {} работает, а () не работает здесь при инициализации атомарного объекта?
Рассмотрим код:
#include <atomic>
struct stru {
int a{};
int b{};
};
int main() {
// Doesn't work: std::atomic<stru> as({});
std::atomic<stru> as{{}};
}
Сообщение об ошибке, созданное для прямой инициализации,...
143 просмотров
schedule
16.10.2022
Как инициализировать `std::map‹std::string, CodeInfo›`, используя инициализацию списка?
У меня есть карта с ключом string и значением struct , я не знаю, почему я не могу создать экземпляр объекта с помощью список инициализаторов :
#include <string>
#include <map>
using namespace std;
struct CodeInfo
{
int...
132 просмотров
schedule
02.08.2022
Инициализация списка ссылки: правильно ли GCC или Clang?
Учитывая этот пример:
int g_i = 10;
struct S {
operator int&(){ return g_i; }
};
int main() {
S s;
int& iref1 = s; // implicit conversion
int& iref2 = {s}; // clang++ error, g++ compiles fine:
//...
207 просмотров
schedule
22.03.2023
Почему C++ не допускает неявную инициализацию списка в условном операторе?
Этот код компилируется:
std::string f(bool a, std::string const& b)
{
if (a) return b;
return {};
}
Этот код также компилируется:
std::string f(bool a, std::string const& b)
{
return a ? b : std::string{};
}
Этот...
372 просмотров
schedule
20.05.2023