自動控除は、C++ 14で可能ですが、私は私がした場合にC++ 11すなわちdecltype(オート) - 戻り値の型の推論戻り値の型
でも似たような記述しようとしていますC++ 14の中に書き、それが
struct MyTypeA{
std::vector<int> _d;
};
struct MyTypeB{
int _id;
std::string _name;
MyTypeA _data;
};
decltype(auto) MakeObject(const MyTypeA& obj) {
return std::make_tuple(obj._vec);
}
decltype(auto) MakeObject(const MyTypeB& obj) {
return std::make_tuple(obj._id, obj._name, std::make_tuple(MakeObject(obj._data)));
}
上記のC++ 14であると私は
auto MakeObject (const MyTypeA& obj) -> decltype(std::make_tuple(obj._d)){
return std::make_tuple(obj._d);
};
auto MakeObject (const MyTypeB& obj) -> decltype(std::make_tuple(obj._id, obj._name, std::make_tuple(MakeObject(obj._data)))){
return std::make_tuple(obj._id, obj._name, std::make_tuple(MakeObject(obj._data)));
};
とすることができますよう、以下のようにC++ 11で同様のMakeObject
何かを書き換えることができるだろう私は大量の過負荷の非会員機能を持っているのを見てくださいns。これは動作しますが、非常に冗長で冗長なコードのようです。 C++ 11でこれを行うより良い方法はありますか?
あなたはラムダについて言及していますが、あなたの質問には1つのラムダは見えません。あなたは代わりに "後のリターンタイプ"を意味しましたか? – Angew
私はあなたがラムダについて何を言うか分かりません。投稿したコードはラムダ関数を使用していません。 lambdas(名前付き関数を持たない)が十分であれば、C++ 11でreturn文が1つだけの場合は、すでに自動的な戻り型の減算が行われているので、簡単に使用できます。 –
申し訳ありません。私の悪い、私は非ラムダコードを貼り付け、テキストを変更するのを忘れました。ラムダ – blueskin