Hatena::ブログ(Diary)

C++でゲームプログラミング

2013-02-09

[][]Boost.Coroutine でフィボナッチ

リハビリがてら軽く書いてみました。


[ソース]

#include <iostream>
#include <boost/coroutine/all.hpp>


template<typename C>
void
fibonacci(C& c){
    typedef typename C::arg_type value_type;

    value_type first = 0;
    c(first);

    value_type second = 1;
    c(second);

    while( 1 ){
        value_type third = first + second;
        first = second;
        second = third;
        c(third);
    }
}

int
main(){
    typedef boost::coroutines::coroutine<int()> coroutine;

    coroutine fib(fibonacci);

    coroutine::iterator it = boost::begin(fib);
    for(int i = 0 ; i < 15 ; ++i){
        std::cout << *it << std::endl;
        ++it;
    }

    return 0;
}

[出力]

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377

[boost]

  • ver 1.53.0

naohiro19naohiro19 2016/05/16 23:17 1> main.cpp(30): error C2672: 'boost::range_adl_barrier::begin': 一致するオーバーロードされた関数が見つかりませんでした。
1> main.cpp(30): error C2893: 関数テンプレート 'range_iterator<const T,void>::type boost::range_adl_barrier::begin(const T &)' の特定に失敗しました
1> main.cpp(30): note: 次のテンプレート引数で:
1> main.cpp(30): note: 'T=coroutine')
1> main.cpp(30): error C2893: 関数テンプレート 'range_iterator<C,void>::type boost::range_adl_barrier::begin(T &)' の特定に失敗しました
1> main.cpp(30): note: 次のテンプレート引数で:
1> main.cpp(30): note: 'T=coroutine')
1> main.cpp(32): error C2065: 'it': 定義されていない識別子です。
1> main.cpp(33): error C2065: 'it': 定義されていない識別子です。

naohiro19naohiro19 2016/05/16 23:17 1> main.cpp(30): error C2672: 'boost::range_adl_barrier::begin': 一致するオーバーロードされた関数が見つかりませんでした。
1> main.cpp(30): error C2893: 関数テンプレート 'range_iterator<const T,void>::type boost::range_adl_barrier::begin(const T &)' の特定に失敗しました
1> main.cpp(30): note: 次のテンプレート引数で:
1> main.cpp(30): note: 'T=coroutine')
1> main.cpp(30): error C2893: 関数テンプレート 'range_iterator<C,void>::type boost::range_adl_barrier::begin(T &)' の特定に失敗しました
1> main.cpp(30): note: 次のテンプレート引数で:
1> main.cpp(30): note: 'T=coroutine')
1> main.cpp(32): error C2065: 'it': 定義されていない識別子です。
1> main.cpp(33): error C2065: 'it': 定義されていない識別子です。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/osyo-manga/20130209/1360412742