std::function<void()> task; //function object¸¦ ÀúÀåÇÒ º¯¼ö
template <class func, class... args> //... (1)
Task(func&& f, args&&... a) : task(std::bind(std::forward<func>(f), std::forward<args>(a)...) // ÀÎÀÚ¸¦ bindÇؼ task¿¡ ³ÖÀ½.
{}
±×¸®°í ÀÌ Å¬·¡½ºÀÇ º¹»ç »ý¼ºÀÚ¸¦ ´ÙÀ½°ú °°ÀÌ ¸¸µé¾ú½À´Ï´Ù.
Task(const Task& other) : task(other.task) {} //... (2)
ÀÌ·¸°Ô º¹»ç»ý¼ºÀÚ¸¦ ¿À¹ö·Îµå ÇÒ °æ¿ì ´ÙÀ½°ú °°Àº °æ¿ì¿¡ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù.
Task task([](){ std::cout << "Hello, world!" << std::endl; }); //°£´ÜÇÑ Task »ý¼º
Task other = task; //º¹»ç »ý¼ºÀÚ È£Ãâ!
Á¦°¡ ÀǵµÇÑ ÇÔ¼ö È£ÃâÀº º¹»ç»ý¼ºÀÚ(2) È£ÃâÀÔ´Ï´Ù. ±×·±µ¥ À̳ðÀº »ý°¢Áöµµ ¸øÇÏ°Ô (1)À» È£ÃâÇÏ°Ô µË´Ï´Ù.
ÀÌ°Ô ¿Ö (1)À» È£ÃâÇÏ°Ô µÇ´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.
¶ÇÇÑ ÀÌ°É (2)¸¦ È£ÃâÇÏ°Ô ¸¸µé ¹æ¹ýÀÌ ¾ø´ÂÁö ±Ã±ÝÇÕ´Ï´Ù.
Áú¹® | 1398¸íÀÌ Àоú¾î¿ä. 44.212.26.248