Home > プログラミング > gcc 4.5.0 (experimental) でラムダ式を返す関数を作ろうとしたが…

gcc 4.5.0 (experimental) でラムダ式を返す関数を作ろうとしたが…

下のようにdecltypeの中にλ式を書いたらコンパイル通らなかった.うーん,expressionなら何でもよいと思ったのだが何か間違っただろうか?

#include <iostream>
 
template <typename T>
auto func(T i) -> decltype(i) { return i; }
 
template <typename T>
auto func1(T i) -> decltype([=](int j){ return i+j; })
 { return [=](int j){ return i+j; }; }
 
int main(int argc, char *argv[])
{
        func(1);
        func1(1);
        return 0;
}

上側のfuncの定義は通る.でも下のfunc1の定義が通らない.expected primary-expression before ')' token (λ式の後の)の手前に式が必要)とか言われる.

そしてλ式とテンプレートの同時使用の仕方が分からない.ポリモーフィックなλ式は作れるのか?

★下記に2つの英単語をスペースで区切って入力してください

Home > プログラミング > gcc 4.5.0 (experimental) でラムダ式を返す関数を作ろうとしたが…

Search
Feeds

Page Top