1. ホーム
  2. c++

[解決済み] Stroustrupの例で、"return 1 : 2 "のコロンは何を意味しているのか?

2022-04-24 08:12:04

質問

コロンの使い方がよくわからないのですが。

本の中で見つけた C++プログラミング言語 Bjarne Stroustrup著、第4版、11.4.4 "Call and Return"、297ページ。

void g(double y)
{
  [&]{ f(y); }                                               // return type is void
  auto z1 = [=](int x){ return x+y; }                        // return type is double
  auto z2 = [=,y]{ if (y) return 1; else return 2; }         // error: body too complicated
                                                             // for return type deduction
  auto z3 =[y]() { return 1 : 2; }                           // return type is int
  auto z4 = [=,y]()−>int { if (y) return 1; else return 2; } // OK: explicit return type
}

紛らわしいコロンが7行目に出てきます。 return 1 : 2 . これが何になるのかさっぱりわからない。ラベルでも三項演算子でもない。

最初のメンバーがいない条件付き三項演算子のようです(しかも ? ) が、その場合、条件なしでどのように機能するのかが理解できません。

どのように解決するのですか?

本の中の誤字です。見てください C++プログラミング言語』第2刷・第3刷の正誤表 . 以下のような例でなければなりません。

auto z3 =[y]() { return (y) ? 1 : 2; }