Условно объявить переменную определенного типаC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Условно объявить переменную определенного типа

Сообщение Anonymous »

Вот чего я хочу достичь:

Код: Выделить всё

struct A { A(/* ... */) {} A(A const&) = delete; };
struct B { B(/* ... */) {} B(B const&) = delete; };

int main()
{
static bool constexpr cond = false;

[[maybe_unused]]
A a(/* ... */);
[[maybe_unused]]
B b(/* ... */);

std::conditional_t c = cond ? a : b;

return 0;
}
Это не компилируется, поскольку знак "?" Оператор требует, чтобы оба типа были конвертируемы друг в друга. Что мне (очевидно) нужно, так это то, чтобы c был a или b в зависимости от того, является ли cond истинным или ложным. Как мне этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/785 ... rtain-type
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»