Ich mag angeben, so etwas tun:anderen Datentyp zurück, ohne explizit Datentyp
template<class T>
T foo(uint8_t x)
{
if (x<32) return ((int32_t)1<<x);
else return ((int64_t)1<<x);
}
aber ich will nicht foo<int32_t>(x)
oder foo<int64_t>(x)
nennen. Es sieht einfach nicht gut aus. Ich möchte, dass der Rückgabetyp automatisch korrekt abgeleitet wird.
Beabsichtigte Verwendungsbeispiele:
std::max(foo(10),some_variable); // return type of foo need to match some_variable
std::min(foo(32),another_variable);
Die Lösung muss Vorlage nicht sein. Wenn Makros dasselbe erreichen können, verwende ich gerne Makros. Irgendwelche Vorschläge?
Ist 'foo()' möglich? (Ich meine ist "x" eine Laufzeit oder Kompilierzeit Wert?) –
Jarod42
es ist ein Laufzeit-Wert – james
Leider ist es nicht möglich, wie Sie es verwenden. Wenn 'T' auch für ein Argument verwendet wurde, würde es gut funktionieren. –