1

次のラムダ関数を作成しようとすると問題が発生します。

const auto var x = [&y]() -> /*???*/ {
if (y == type1) {
  return some_type_1;
} else if (y == type2) {
  return some_type_2;
} else // ...

自動を返品タイプとして使用できないことはわかっています。しかし、どうすれば別の方法でそれを行うことができますか?

ありがとう!

4

1 に答える 1

2

some_type_1some_type_2が共通の型を持つ場合は、次のように記述します。

const auto var x = [&y]() -> typename std::common_type<
  decltype(some_type_1),
  decltype(some_type_2)>::type {
if (y == type1) {
  return some_type_1;
} else if (y == type2) {
  return some_type_2;
} else // ...

同様に、三項式を使用できます。

const auto var x = [&y]() {
  (y == type1) ? some_type_1 :
  (y == type2) ? some_type_2 :
  ...;
}
于 2013-02-05T15:38:14.737 に答える