// 'Identity' is a lambda that accepts an argument of any type and
// returns the value of its parameter. auto Identity = [](auto a) { return a; };
int three = Identity(3);
char const* hello = Identity("hello");
А> // 'Identity' is a lambda that accepts an argument of any type and
А> // returns the value of its parameter.
А>auto Identity = [](auto a) { return a; };
А>int three = Identity(3);
А>char const* hello = Identity("hello");
А>
А>это с++
def Identity[T](a) { a }
def three = Identity(3);
def hello = Identity("hello");
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, Аноним, Вы писали:
_NN>Не подскажете какой компилятор С++ 11 это дело умеет компилировать ?
gcc 4.8
Re[2]: Возможно ли такое сделать в немерли?
От:
Аноним
Дата:
07.05.13 09:39
Оценка:
Здравствуйте, Don Reba, Вы писали:
DR>Здравствуйте, Аноним, Вы писали:
А>>
А>> // 'Identity' is a lambda that accepts an argument of any type and
А>> // returns the value of its parameter.
А>>auto Identity = [](auto a) { return a; };
А>>int three = Identity(3);
А>>char const* hello = Identity("hello");
А>>
А>>это с++
DR>
DR>def Identity[T](a) { a }
DR>def three = Identity(3);
DR>def hello = Identity("hello");
DR>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, _NN_, Вы писали:
_NN>>Здравствуйте, Аноним, Вы писали:
_NN>>Не подскажете какой компилятор С++ 11 это дело умеет компилировать ?
А>gcc 4.8
Поддержка auto в параметрах еще на стадии предложения: Generic (Polymorphic) Lambda Expressions (Revision 3)
Это значит, что это не часть С++11.
Из этого следует g++ 4.8 с флагом --std=c++11 не будет компилировать ваш код:
g++ --version
g++ (rev2, Built by MinGW-builds project) 4.8.0
Copyright (C) 2013 Free Software Foundation, Inc.
g++ --std=c++11 a.cpp
a.cpp: In function 'int main()':
a.cpp:2:17: error: parameter declared 'auto'
auto x=[](auto a){return a;};
^
a.cpp: In lambda function:
a.cpp:2:27: error: 'a' was not declared in this scope
auto x=[](auto a){return a;};
Здравствуйте, _NN_, Вы писали:
_NN>Из этого следует g++ 4.8 с флагом --std=c++11 не будет компилировать ваш код:
_NN>
_NN>g++ --version
_NN>g++ (rev2, Built by MinGW-builds project) 4.8.0
_NN>Copyright (C) 2013 Free Software Foundation, Inc.
_NN>
_NN>
_NN>g++ --std=c++11 a.cpp
_NN>a.cpp: In function 'int main()':
_NN>a.cpp:2:17: error: parameter declared 'auto'
_NN> auto x=[](auto a){return a;};
_NN> ^
_NN>a.cpp: In lambda function:
_NN>a.cpp:2:27: error: 'a' was not declared in this scope
_NN> auto x=[](auto a){return a;};
_NN>
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, STDray, Вы писали:
DR>>>
DR>>>def Identity[T](a) { a }
DR>>>def three = Identity(3);
DR>>>def hello = Identity("hello");
DR>>>
DR>>>это Немерле
STD>>Только надо указать тип аргумента для Indentity STD>>
def Identity[T](a : T) { a }
STD>>иначе типизатор object для a выведет. А>работает А>спасибо
а так не пашет
def Identity[T](a : T,b : T):T { a+b }
def three = Identity(3,1);
def hello = Identity(3.1,2);