Commit b0c1c786 authored by ufownl's avatar ufownl

Fix compilation error on GCC4.8

parent f64f1ea2
...@@ -56,20 +56,20 @@ CAF_TEST(test_serial_reply) { ...@@ -56,20 +56,20 @@ CAF_TEST(test_serial_reply) {
auto c3 = self->spawn<linked>(mirror_behavior); auto c3 = self->spawn<linked>(mirror_behavior);
auto c4 = self->spawn<linked>(mirror_behavior); auto c4 = self->spawn<linked>(mirror_behavior);
self->become ( self->become (
[=](hi_atom) { [=](hi_atom) mutable {
auto rp = self->make_response_promise(); auto rp = self->make_response_promise();
CAF_MESSAGE("received 'hi there'"); CAF_MESSAGE("received 'hi there'");
self->request(c0, sub0_atom::value).then( self->request(c0, sub0_atom::value).then(
[=](sub0_atom) { [=](sub0_atom) mutable {
CAF_MESSAGE("received 'sub0'"); CAF_MESSAGE("received 'sub0'");
self->request(c1, sub1_atom::value).then( self->request(c1, sub1_atom::value).then(
[=](sub1_atom) { [=](sub1_atom) mutable {
CAF_MESSAGE("received 'sub1'"); CAF_MESSAGE("received 'sub1'");
self->request(c2, sub2_atom::value).then( self->request(c2, sub2_atom::value).then(
[=](sub2_atom) { [=](sub2_atom) mutable {
CAF_MESSAGE("received 'sub2'"); CAF_MESSAGE("received 'sub2'");
self->request(c3, sub3_atom::value).then( self->request(c3, sub3_atom::value).then(
[=](sub3_atom) { [=](sub3_atom) mutable {
CAF_MESSAGE("received 'sub3'"); CAF_MESSAGE("received 'sub3'");
self->request(c4, sub4_atom::value).then( self->request(c4, sub4_atom::value).then(
[=](sub4_atom) mutable { [=](sub4_atom) mutable {
......
...@@ -149,6 +149,23 @@ public: ...@@ -149,6 +149,23 @@ public:
virtual mpi_output_t<Ys...> operator()(mpi_input_t<Xs>...) = 0; virtual mpi_output_t<Ys...> operator()(mpi_input_t<Xs>...) = 0;
}; };
template <class... Ts>
struct abstract_composable_state_mixin_helper;
template <class T, class... Ts>
struct abstract_composable_state_mixin_helper<T, Ts...>
: public abstract_composable_state_mixin<T>,
public abstract_composable_state_mixin_helper<Ts...> {
using abstract_composable_state_mixin<T>::operator();
using abstract_composable_state_mixin_helper<Ts...>::operator();
};
template <class T>
struct abstract_composable_state_mixin_helper<T>
: public abstract_composable_state_mixin<T> {
using abstract_composable_state_mixin<T>::operator();
};
/// Marker type that allows CAF to spawn actors from composable states. /// Marker type that allows CAF to spawn actors from composable states.
class abstract_composable_state { class abstract_composable_state {
public: public:
...@@ -188,8 +205,9 @@ template <class TypedActor> ...@@ -188,8 +205,9 @@ template <class TypedActor>
class composable_state; class composable_state;
template <class... Clauses> template <class... Clauses>
class composable_state<typed_actor<Clauses...>> : virtual public abstract_composable_state, class composable_state<typed_actor<Clauses...>>
public abstract_composable_state_mixin<Clauses>... { : virtual public abstract_composable_state,
public abstract_composable_state_mixin_helper<Clauses...> {
public: public:
using signatures = detail::type_list<Clauses...>; using signatures = detail::type_list<Clauses...>;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment