質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

クロージャ

クロージャは、プログラミング言語における関数オブジェクトの一種です。 引数以外の変数を実行時の環境ではなく、 自身が定義された環境において解決することを特徴とします。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1279閲覧

クロージャと無名関数の関係について

LEGEND

総合スコア9

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

クロージャ

クロージャは、プログラミング言語における関数オブジェクトの一種です。 引数以外の変数を実行時の環境ではなく、 自身が定義された環境において解決することを特徴とします。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2021/06/17 07:24

質問内容

https://docs.microsoft.com/ja-jp/cpp/cpp/lambda-expressions-in-cpp?view=msvc-160 に記述されている
「C++ 11 以降では、ラムダ式 (多くの場合、 ラムダ と呼ばれます) は、関数に引数として呼び出されるか、引数として渡される匿名関数オブジェクト ( クロージャ) を定義する便利な方法です」
という文章についてなのですが、私がこの通り認識していたところ、他の質問において、クロージャと無名関数は全くの別物だと指摘されてしまいました。
この文章が間違ってるのか、C++が特殊なのか、それとも何も矛盾してないかのどれでしょうか?
それとも方言のようなものでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/06/17 09:58

>>他の質問において この質問だけ見る人ではその真意が全く伝わらないのでリンクを提示してください。
guest

回答2

0

ベストアンサー

  • クロージャは環境をキャプチャする
  • 無名関数は無名

クロージャであることと無名関数であることは独立した事象です。

しかし C++ においては

  • ラムダ式が生成する値はクロージャ型である
  • ラムダ式が生成する値は prvalue (平易に言えば名前のない一時的な値) である

という性質が明記されていて、ラムダ式が生成するクロージャは常に無名関数としての性質も与えられることが確実なのです。

投稿2021/06/17 18:00

SaitoAtsushi

総合スコア5604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

プログラミング言語が異なれば、用語やその背景となる実装上の事情は異なってきます。

C++ではC++の事情があるので、他の言語でもそれが通じるとは限りません。

投稿2021/06/17 07:28

maisumakun

総合スコア145779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/06/17 07:29

> 他の質問において、クロージャと無名関数は全くの別物だと指摘されてしまいました。 「他の質問」がなにの言語に関するものかわからないので、答えることは不可能です。
LEGEND

2021/06/17 07:36

ですよね、プログラミング全般の文脈で、貴方は無知すぎます的な感じで言われましたので困惑してました
maisumakun

2021/06/17 07:41

> ですよね えっ? 環境によっては「名前のあるクロージャ」もありますし、「無名関数だけどクロージャでない」ものも存在します。
LEGEND

2021/06/17 07:49

それはC++の話ですか?私は ある言語でこういう意味としてなじみがありますがこの言語のクロージャの意味を知りませんでした というような発言をしました
maisumakun

2021/06/17 07:52

背景などを小出しにされると、何を信じていいのかわからなくなります。わかっている情報(今回の場合は「別の質問」)など、持ち合わせている情報はできるだけ提示してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問