Как можно возвращать разные типы из шаблона функции в зависимости от условия?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как можно возвращать разные типы из шаблона функции в зависимости от условия?

Сообщение Anonymous »

У меня есть следующий фрагмент кода:
helper.hpp
:

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

struct A {
uint32_t a, b;
};

struct B {
uint32_t a, b;
};

template 
struct C {
T barcode;
};
Теперь, исходя из некоторого условия, я хочу создать соответствующий объект структуры в файле main.cpp

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

if(/* something */) {
C obj;
}
else {
C obj;
}
Теперь проблема в том, что он находится внутри области if, к которой я не могу получить доступ за ее пределами.
Один из способов справиться с этим — вернуть объект из функции, примерно так:

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

template 
C getObject(){
if(/* something */) {
return C{};
}
else{
return C{};
}
}

auto obj = getObject()
но это дает мне следующую ошибку компиляции:

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

error: no matching function for call to 'getObject()
note:   couldn't deduce template parameter 'T'
Будем благодарны за любую помощь.


Подробнее здесь: https://stackoverflow.com/questions/448 ... on-a-condi
Ответить

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

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

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

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

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