Boost logo

Boost :

Subject: Re: [boost] [thread] [repost] Why the at_thread_exit cleanup function is const?
From: vicente.botet (vicente.botet_at_[hidden])
Date: 2009-01-24 05:18:14


Hello, I first posted this two months ago, allow me to repost just in
case it went unnoticed:

----- Original Message -----
From: "vicente.botet" <vicente.botet_at_[hidden]>
To: <boost_at_[hidden]>
Sent: Monday, November 10, 2008 5:37 PM
Subject: [boost] [thread] Why the at_thread_exit cleanup function is const?

If I remove the const on operator()()
    struct mycallable1
    {
        void operator()() {
            std::cout << "mycallable1" << std::endl;
        };
    };

    void my_thread() {
        std::cout << "my_thread" << std::endl;
        mycallable1 x;
        boost::this_thread::at_thread_exit(x);
    }

I get the following error:

gcc.compile.c++ ..\..\..\bin.v2\libs\interthreads\test\hello_world.test\gcc-4.3.2\debug\target-os-cygwin\threadapi-pthread\threading-multi\hello_world.o
../../../boost/thread/detail/thread.hpp: In member function `void boost::detail::thread_exit_function<F>::operator()() const [with F = mycallable1]':
..\example\hello_world.cpp:52: instantiated from here
../../../boost/thread/detail/thread.hpp:474: error: passing `const mycallable1' as `this' argument of `void mycallable1::operator()()' discards qualifiers

Why the cleanup function must be const?

Best,

Vicente

______________________
Vicente Juan Botet Escribá
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk