## Class template selfN

hamigaki::coroutines::selfN —

## Synopsis

    template<typename R, typename T1, typename T2, ..., typename TN>
    class selfN {
    public:

      // queries
      R result();

      // modifiers
      void exit();
      boost::tuple<T1,T2, ..., TN> yield(R);
      template<typename Coroutine, typename U1, typename U2, ..., typename UM>
        boost::tuple<T1,T2, ..., TN> yield_to(Coroutine, U1, U2, ..., UM);
    };

## Description

### `selfN` queries

1.     R result();

   Returns: | 前回の戻り値を返す

### `selfN` modifiers

1.     void exit();

   Effects: | コルーチンの実行を中断し、終了させる。
   Returns: | 決して戻らない
   Throws: | `exit_exception`

2.     boost::tuple<T1,T2, ..., TN> yield(R r);

   Effects: | コルーチンの実行を一時中断し、呼び出し元にコンテキストを戻す。コルーチンの戻り値は`r`になる。
   Returns: | 再度呼び出された際のコルーチンの引数

3.     template<typename Coroutine, typename U1, typename U2, ..., typename UM>
         boost::tuple<T1,T2, ..., TN> yield_to(Coroutine c, U1 a1, U2 a2, ..., UM aM);

   Effects: | コルーチンの実行を一時中断し、コルーチン`c`にコンテキストを移動させる。コルーチン`c`の引数は`a1, a2, ..., aM`になる。
   Returns: | 再度呼び出された際のコルーチンの引数

| 製作著作 © 2006, 2007 Takeshi Mouri