たくさんの...は何ですか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
JAT

たくさんの...は何ですか

#1

投稿記事 by JAT » 8年前

下記C言語文に存在する四つの「...」に意味不明です。

コード:

template<class... Args>  void f(Args... args) {  
    auto x = [args...] { return g(args...); };  
    x();  
}  
出所:
https://msdn.microsoft.com/ja-jp/library/dd293608.aspx

ご存知の方教えてくださいませんか。

Math

Re: たくさんの...は何ですか

#2

投稿記事 by Math » 8年前

... はコンピュータでは”たくさんの”を意味します。It's means " ... is many"(たくさんとは複数のという事です)

使われているコンテキストからC++11のラムダ式 のC++14拡張のcapture の話から Templateと飛躍を重ねて とても難しくみえるのですが。
まず ラムダ式 については ご存知でしょうか。

Math

Re: たくさんの...は何ですか

#3

投稿記事 by Math » 8年前

http://dixq.net/forum/viewtopic.php?f=3&t=18870のNo.18 に たくさん 使われている
 => がC# の ラムダ式 です。C# やVisualBasic では古くから使っていますがC++はようやく追いついてきた感じです。

inemaru
記事: 108
登録日時: 9年前

Re: たくさんの...は何ですか

#4

投稿記事 by inemaru » 8年前

手っ取り早く、意味を知りたいのでしたら
下記のキーワードを調べると良いです。
提示されているコード中で、ラムダ式が使用されていますが
質問内容は、「...」(エリプシス)の意味なので省略します。
オフトピック
JAT さんが書きました:下記C言語文に存在する四つの「...」に意味不明です。
提示されているコードは、C++(C++14以降)のものであり、C言語ではありません。
今回の回答は、C++を前提とした回答となります。

inemaru
記事: 108
登録日時: 9年前

Re: たくさんの...は何ですか

#5

投稿記事 by inemaru » 8年前

Math さんが書きました:... はコンピュータでは”たくさんの”を意味します。It's means " ... is many"(たくさんとは複数のという事です)
これは、間違っています。(少なくともC++では)
0個である可能性もある為
正しくは、「省略」を意味します。

https://cpprefjp.github.io/lang/cpp11/v ... lates.html

hoge

Re: たくさんの...は何ですか

#6

投稿記事 by hoge » 8年前

出所として示した所の直前に説明があるじゃん。翻訳の質は悪いが。

Math

Re: たくさんの...は何ですか

#7

投稿記事 by Math » 8年前

https://msdn.microsoft.com/ja-jp/library/dn439779.aspxここに省略記号 (...) と書いてありますね。
最初よんだのに見落としていました。
それにしても”次のcapture可変個引数テンプレートの例に示しているように、の後ろに省略記号を付けると、パックの展開を意味します。”とは難解な日本語翻訳(機械翻訳だから?)ですよね!

Math

Re: たくさんの...は何ですか

#8

投稿記事 by Math » 8年前

Stroustruphttps://ja.wikipedia.org/wiki/%E3%83%93 ... 3%E3%83%97
によれば [さらに引数があるかもしれないことを意味する省略記号(...)] です。
MSDN の説明は”A capture followed by an ellipsis is a pack expansion, as shown in this variadic template example”
であり
pack expansionつまり”パック展開”の例としてprint文が分かりやすいといっています。
[パック展開例]

コード:

//可変個引数テンプレート関数の機構について説明するには、これを使用して printf の機能の一部を変更するのが最も適切です。

#include <iostream>  
  
using namespace std;  
  
void print() {  
    cout << endl;  
}  
  
template <typename T> void print(const T& t) {  
    cout << t << endl;  
}  
  
template <typename First, typename... Rest> void print(const First& first, const Rest&... rest) {  
    cout << first << ", ";  
    print(rest...); // recursive call using pack expansion syntax  
}  
  
int main()  
{  
    print(); // calls first overload, outputting only a newline  
    print(1); // calls second overload  
  
    // these call the third overload, the variadic template,   
    // which uses recursion as needed.  
    print(10, 20);  
    print(100, 200, 300);  
    print("first", 2, "third", 3.14159);  
}  
  
//出力
//--------------------------------------------------------------------------------
// 1  
// 10, 20  
// 100, 200, 300  
// first, 2, third, 3.14159  
(That is the answer to the questioner.)

Math

Re: たくさんの...は何ですか

#9

投稿記事 by Math » 8年前

MSDNのタイトル”楕円および可変値引数テンプレート”の”楕円”は

[ellipsis =省略記号] の誤訳と思われます。     ( 「楕円=ellipse」... )

閉鎖

“C言語何でも質問掲示板” へ戻る