Здравствуйте, B0FEE664, Вы писали:
BFE>Здравствуйте, rg45, Вы писали:
R>>Ну вот, а мне тут про какие-то контексты лапшу на уши навешивают
BFE>BFE>using value_type = float;
BFE>struct A
BFE>{
BFE> struct B
BFE> {
BFE> value_type n = 0;
BFE> };
BFE> using value_type = int;
BFE>};
BFE>
только немного не так. Здесь value_type будет как раз float.
using value_t = float;
struct Outer {
struct Inner {
value_t i;
};
std::variant<Inner> v; // value_t = float, Inner - считается полным, конструктор создать можно, код компилируется
using value_t = long long; // это переопределение уже никого не волнует, тип Inner готов
};
а вот как раз с дефолтной инициализацией компилятор не знает откуда взять определение
static constexpr int SuperDuperConst = 0;
struct Outer {
struct Inner {
int i = SuperDuperConst;
};
std::variant<Inner> v; // i должна быть равна 42, но мы ещё не добрались до определения SuperDuperConst и конструктор сгенерировать не можем - компиляция провалилась
static constexpr int SuperDuperConst = 42;
};