E
template<typename ... Types>
class Foo {
public:
template <typename T>
Foo(T&& t) : value(std::forward<T>(t)) {}
private:
variant<Types ...> value;
};
Size: a a a
E
template<typename ... Types>
class Foo {
public:
template <typename T>
Foo(T&& t) : value(std::forward<T>(t)) {}
private:
variant<Types ...> value;
};
ПК
D
D
D
Е
E
template<typename ... Types>
class Foo {
public:
template <typename T>
Foo(T&& t) : value(std::forward<T>(t)) {}
private:
variant<Types ...> value;
};
Е
ПК
E
AF
LA
D
std::move
это безусловный каст к r-value referencestd::forward
это каст к левой ссылке, если в функцию пришла левая ссылка и к правой ссылке, если пришла праваяE
Е
Е
using Types = Args...
?D
D
using... Types = Args...;
Е
D
using Types = Args1..., Args2..., Args3...;
добавь