下のように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 (λ式の後の)の手前に式が必要)とか言われる.
そしてλ式とテンプレートの同時使用の仕方が分からない.ポリモーフィックなλ式は作れるのか?
- Newer: ことはじめ