decltype und Templates
-
Hey Leute,
angenommen man hat folgenden Code:
template <typename L, typename R> auto operator+(Vector<L> & lhs, Vector<R> & rhs) -> Vector<decltype(lhs[0] + rhs[0])> { ... }Kann man hier nicht anstatt
decltype(lhs[0] + rhs[0])irgendwie so etwas der Art
decltype(L+R)schreiben?
decltype werte ja nicht aus, sondern überprüft nur die Typen soweit ich weiß, von daher erscheint mir die vorgeschlagene Alternative intuitiver.
Gruß

-
decltype() wertet den Typ des Ausdrucks aus, L+R ist hier kein Ausdruck.
-
decltype(L() + R()) wäre ne Möglichkeit, wenn denn L und R default-constructible sind.
Alternativ (und ganz allgemein):template <class T> T create(); template <typename L, typename R> auto operator+(Vector<L> & lhs, Vector<R> & rhs) -> Vector<decltype(create<L>() + create<R>())> {/*...*/}Allerdings ist lesabr und verständlich dann doch was anderes...
-
Dein create gibts im Standard übrigens schon als std::declval.