Как можно возвращать разные типы из шаблона функции в зависимости от условия?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

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