Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

minimal_timed_async_executor_test_exe fails to compile on master (d6f505c) #3058

Closed
zao opened this issue Dec 7, 2017 · 2 comments
Closed

Comments

@zao
Copy link
Contributor

zao commented Dec 7, 2017

Debian 9.2, Clang 3.8.1, C++14, Boost 1.65.1, RelWithDebInfo.
This failure was observed on a branch earlier, seems to have been merged onto master. There may be additional failures, didn't continue the build. The output below is from master commit d6f505c.

According to @K-ballo on IRC:

with C++14 the algorithm dispatch machinery is not sfinae-friendly (for diagnostics reasons), and something is inadvertently instantiating those with a const deferred_call/one-shot

[1167/1443] Building CXX object tests/unit/parallel/executors/CMakeFiles/minimal_timed_async_executor_test_exe.dir/minimal_timed_async_executor.cpp
.o
FAILED: tests/unit/parallel/executors/CMakeFiles/minimal_timed_async_executor_test_exe.dir/minimal_timed_async_executor.cpp.o
/usr/bin/clang++   -DBOOST_DISABLE_ASSERTS -DHPX_APPLICATION_EXPORTS -DHPX_APPLICATION_NAME=minimal_timed_async_executor_test_exe -DHPX_APPLICATION
_STRING=\"minimal_timed_async_executor_test_exe\" -DHPX_DISABLE_ASSERTS -DHPX_PREFIX=\"/tree/build-rwdi\" -D_GNU_SOURCE -I/tree/hpx -isystem /opt/b
oost-1.65.1-cxx14/include -I. -I/tree/hpx/tests -pthread -Wall -Wextra -Wno-unused-local-typedefs -Wno-strict-aliasing -Wno-sign-promo -Wno-attribu
tes -Wno-cast-align -Wno-unused-parameter -Wformat=2 -Wno-format-nonliteral -Winit-self -Wdouble-promotion -Wcast-qual -Werror=parentheses -Werror=
reorder -Werror=return-type -Werror=sequence-point -Werror=uninitialized -Werror=format -Werror=missing-braces -Werror=sign-compare -fdiagnostics-s
how-option -Werror=vla -Werror=return-type -Wno-cast-align -O2 -g -DNDEBUG   -std=c++14 -MD -MT tests/unit/parallel/executors/CMakeFiles/minimal_ti
med_async_executor_test_exe.dir/minimal_timed_async_executor.cpp.o -MF tests/unit/parallel/executors/CMakeFiles/minimal_timed_async_executor_test_e
xe.dir/minimal_timed_async_executor.cpp.o.d -o tests/unit/parallel/executors/CMakeFiles/minimal_timed_async_executor_test_exe.dir/minimal_timed_asy
nc_executor.cpp.o -c /tree/hpx/tests/unit/parallel/executors/minimal_timed_async_executor.cpp
In file included from /tree/hpx/tests/unit/parallel/executors/minimal_timed_async_executor.cpp:7:
In file included from /tree/hpx/hpx/hpx.hpp:10:
In file included from /tree/hpx/hpx/include/lcos.hpp:11:
In file included from /tree/hpx/hpx/include/actions.hpp:11:
In file included from /tree/hpx/hpx/runtime/actions/action_invoke_no_more_than.hpp:12:
In file included from /tree/hpx/hpx/runtime/actions/continuation.hpp:14:
In file included from /tree/hpx/hpx/runtime/actions/trigger.hpp:11:
In file included from /tree/hpx/hpx/lcos/future.hpp:1646:
In file included from /tree/hpx/hpx/lcos/local/packaged_continuation.hpp:24:
/tree/hpx/hpx/util/deferred_call.hpp:173:16: error: call to deleted constructor of 'typename std::decay<deferred<id (*(int &&))(int)> &>::type' (ak
a 'hpx::util::detail::deferred<hpx::thread::id (*(int &&))(int)>')
        return std::forward<F>(f);
               ^~~~~~~~~~~~~~~~~~
/tree/hpx/hpx/async.hpp:176:23: note: in instantiation of function template specialization 'hpx::util::deferred_call<hpx::util::detail::deferred<hp
x::thread::id (*(int &&))(int)> &>' requested here
                util::deferred_call(std::forward<F>(f), std::forward<Ts>(ts)...));
                      ^
/tree/hpx/hpx/lcos/async.hpp:330:16: note: in instantiation of function template specialization 'hpx::detail::async_launch_policy_dispatch<hpx::uti
l::detail::deferred<hpx::thread::id (*(int &&))(int)>, void>::call<hpx::util::detail::deferred<hpx::thread::id (*(int &&))(int)> &>' requested here
            >::call(std::forward<Policy_>(launch_policy), std::forward<F>(f),
               ^
/tree/hpx/hpx/async.hpp:350:16: note: in instantiation of function template specialization 'hpx::detail::async_dispatch<hpx::detail::async_policy,
void>::call<const hpx::detail::async_policy &, hpx::util::detail::deferred<hpx::thread::id (*(int &&))(int)> &>' requested here
            >::call(std::forward<F>(f), std::forward<Ts>(ts)...);
               ^
/tree/hpx/tests/unit/parallel/executors/minimal_timed_async_executor.cpp:174:21: note: in instantiation of function template specialization 'hpx::a
sync<const hpx::detail::async_policy &, hpx::util::detail::deferred<hpx::thread::id (*(int &&))(int)> &>' requested here
        return hpx::async(hpx::launch::async, std::forward<F>(f),
                    ^
/tree/hpx/hpx/parallel/executors/execution.hpp:270:25: note: in instantiation of function template specialization 'test_async_executor1::async_exec
ute<hpx::util::detail::deferred<hpx::thread::id (*(int &&))(int)> &>' requested here
            return exec.async_execute(std::forward<F>(f),
                        ^
/tree/hpx/hpx/parallel/executors/execution.hpp:288:24: note: (skipping 6 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
                return async_execute_dispatch(0,
                       ^
/tree/hpx/hpx/parallel/executors/execution.hpp:288:24: note: in instantiation of function template specialization 'hpx::parallel::execution::detail
::async_execute_dispatch<hpx::parallel::execution::timed_executor<test_async_executor1> &, hpx::thread::id (*)(int), int>' requested here
/tree/hpx/hpx/parallel/executors/execution_fwd.hpp:222:20: note: in instantiation of function template specialization 'hpx::parallel::execution::de
tail::async_execute_fn_helper<hpx::parallel::execution::timed_executor<test_async_executor1>, void>::call<hpx::parallel::execution::timed_executor<
test_async_executor1> &, hpx::thread::id (*)(int), int>' requested here
                >::call(std::forward<Executor>(exec), std::forward<F>(f),
                   ^
/tree/hpx/hpx/parallel/executors/execution_fwd.hpp:323:20: note: in instantiation of function template specialization 'hpx::parallel::execution::de
tail::async_execute<hpx::parallel::execution::timed_executor<test_async_executor1> &, hpx::thread::id (*)(int), int>' requested here
            return async_execute(std::forward<Executor>(exec),
                   ^
/tree/hpx/tests/unit/parallel/executors/minimal_timed_async_executor.cpp:152:5: note: in instantiation of function template specialization 'test_ti
med_async<test_async_executor1>' requested here
    test_timed_async(exec);
    ^
/tree/hpx/tests/unit/parallel/executors/minimal_timed_async_executor.cpp:285:5: note: in instantiation of function template specialization 'test_ti
med_executor<test_async_executor1>' requested here
    test_timed_executor<test_async_executor1>({{ 0, 0, 6, 0, 0, 0 }});
    ^
/tree/hpx/hpx/util/deferred_call.hpp:97:13: note: 'deferred' has been explicitly marked deleted here
            deferred(deferred const&) = delete;
            ^
1 error generated.
@msimberg msimberg mentioned this issue Dec 8, 2017
28 tasks
@msimberg msimberg added this to the 1.1.0 milestone Dec 8, 2017
@zao
Copy link
Contributor Author

zao commented Dec 8, 2017

Please note that this fails already at compile time, blocking the building of tests in general and as such, prevents me from running the test suite.

@K-ballo
Copy link
Member

K-ballo commented Dec 8, 2017

I'm still looking into it.

@zao As a workaround you could build in C++11 mode, or disable return type deduction.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants