Size: a a a

2020 August 22

Е

Егор in supapro.cxx
Danya
И что такое std::monotonic
поправил
источник

D

Danya in supapro.cxx
Егор
поправил
Все равно — что это?
источник

Е

Егор in supapro.cxx
Danya
Все равно — что это?
Штука чтобы вариант с типами без дефолт конструктора можно было создавать
https://en.cppreference.com/w/cpp/utility/variant/monostate
источник

D

Danya in supapro.cxx
Егор
Штука чтобы вариант с типами без дефолт конструктора можно было создавать
https://en.cppreference.com/w/cpp/utility/variant/monostate
А вариант не работает, когда все типы в нем не дефолт-конструируемые или только одного достаточно?
источник

Е

Егор in supapro.cxx
Danya
А вариант не работает, когда все типы в нем не дефолт-конструируемые или только одного достаточно?
Нужно чтобы первый из вариадика был дефолт конструируемый вродь как
источник

D

Danya in supapro.cxx
Хммм, что такое non-object types?

Template parameters
Types - the types that may be stored in this variant. All types must meet the Destructible requirements (in particular, array types and non-object types are not allowed).


https://en.cppreference.com/w/cpp/utility/variant
источник

D

Danya in supapro.cxx
Void? Incomplete types?
источник

D

Danya in supapro.cxx
@Malbu0698
Только мне все равно интересно как ты решил свинью в классе делать
https://t.me/supapro/730219
источник

E

Erdem in supapro.cxx
Егор
ну так и сделать вроде
а как в таком случае указывать тип в конструкторе и методах? такое не работает:
template<typename ... Types>
class Foo {
public:
 Foo(Types ... args) : value(args) {}
private:
 variant<Types ...> value;
};
источник

D

Danya in supapro.cxx
Erdem
а как в таком случае указывать тип в конструкторе и методах? такое не работает:
template<typename ... Types>
class Foo {
public:
 Foo(Types ... args) : value(args) {}
private:
 variant<Types ...> value;
};
1) во-первых надо args раскрыть
value(args...)
источник

ПК

Побитый Кирпич... in supapro.cxx
Erdem
как сделать variadic templates для std::variant? например что-то вроде такого:
template<typename ... Types>
class Foo {
public:
private:
 variant<Types ...> value;
};
цель какая?
источник

D

Danya in supapro.cxx
2) каким образом ты решил в вариант передавать все объекты? Зачем? Вариант —  это тип-сумма, то есть он хранит только один из объектов
источник

E

Erdem in supapro.cxx
Побитый Кирпич
цель какая?
чтобы каждый такой класс хранил какой-то один тип, и ещё хранил указатели на другие объекты этого класса, но это потом
источник

Е

Егор in supapro.cxx
ща мб через conditional закостылю
источник

E

Erdem in supapro.cxx
Danya
2) каким образом ты решил в вариант передавать все объекты? Зачем? Вариант —  это тип-сумма, то есть он хранит только один из объектов
я как раз и хочу взять какой-то один тип из Types... и передать его в variant<>
источник

D

Danya in supapro.cxx
Егор
ща мб через conditional закостылю
Ну в принципе можно
источник

D

Danya in supapro.cxx
Erdem
я как раз и хочу взять какой-то один тип из Types... и передать его в variant<>
Какой "какой-то"?
источник

ПК

Побитый Кирпич... in supapro.cxx
Erdem
а как в таком случае указывать тип в конструкторе и методах? такое не работает:
template<typename ... Types>
class Foo {
public:
 Foo(Types ... args) : value(args) {}
private:
 variant<Types ...> value;
};
template<typename ... Types>
class Foo {
public:
 template <typename T>
 Foo(T&& t) : value(std::forward<T>(t)) {}
private:
 variant<Types ...> value;
};
источник

D

Danya in supapro.cxx
Danya
Какой "какой-то"?
Ты сначала определись что тебе нужно
источник

D

Danya in supapro.cxx
Побитый Кирпич
template<typename ... Types>
class Foo {
public:
 template <typename T>
 Foo(T&& t) : value(std::forward<T>(t)) {}
private:
 variant<Types ...> value;
};
Вот хороший вариант, да
источник