// Copyright (C) 2001-2003 // William E. Kempf // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include class factorial { public: factorial(int x) : x(x), res(0) { } void operator()() { res = calculate(x); } int result() const { return res; } private: int calculate(int x) { return x <= 1 ? 1 : x * calculate(x-1); } private: int x; int res; }; int main() { factorial f(10); boost::thread thrd(boost::ref(f)); thrd.join(); std::cout << "10! = " << f.result() << std::endl; }