Всем добра и счастья:) Имеется вот такой вот код(пример):
#include <iostream>
using namespace std;
//if(flag) -> int foo(bool);
//else -> double foo(bool);
auto foo(bool flag) ->decltype(flag ? 1 : 1.0)
{
if(flag) return 1;
else return 1.0;
}
int main()
{
int a = foo(true);//должна вернуть тип int
double b = foo(false);//соответственно double
return 0;
}
Как видите, я добился такого поведения через дикий костыль в decltype. Как можно это записать более правильно и красиво?