Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp0x/lambda/lambda-template4.C @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// PR c++/51459 // { dg-do run { target c++11 } } struct func { virtual ~func() { } virtual void operator()() const = 0; virtual func* clone() const = 0; }; template<typename T> struct funcimpl : func { explicit funcimpl(T t) : t(t) { } void operator()() const { t(); } func* clone() const { return new funcimpl(*this); } T t; }; struct function { func* p; template<typename T> function(T t) : p(new funcimpl<T>(t)) { } ~function() { delete p; } function(const function& f) : p(f.p->clone()) { } function& operator=(const function& ) = delete; void operator()() const { (*p)(); } }; template <typename F> function animate(F f) { return [=]{ f(); }; } int main() { function linear1 = []{}; function av(animate(linear1)); av(); }