[Bug libstdc++/77802] New: [7 Regression] Boost Fiber doesn't compile

trippels at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Sep 30 10:35:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77802

            Bug ID: 77802
           Summary: [7 Regression] Boost Fiber doesn't compile
           Product: gcc
           Version: 7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trippels at gcc dot gnu.org
                CC: ville.voutilainen at gmail dot com
  Target Milestone: ---

Boost-1.62 doesn't build on trunk:

 $ cat tup.cpp
#include <tuple>
template <typename... Args> struct execution_context {
  typedef std::tuple<Args...> args_tpl_t;
  typedef std::tuple<execution_context, typename std::decay<Args>::type...>
      ret_tpl_t;
  execution_context();
  execution_context(execution_context &&);
  ret_tpl_t operator()() {
    args_tpl_t data;
    return tuple_cat(std::forward_as_tuple(execution_context()), data);
  }
};
void fn1() {
  execution_context<int> cc;
  cc();
}

 $ clang++ -stdlib=libc++ -c tup.cpp
 $ g++-6 -c tup.cpp
 $ g++-trunk -c tup.cpp
In file included from tup.cpp:1:0:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.0.0/include/g++-v7/tuple: In instantiation
of ‘constexpr std::_Head_base<_Idx, _Head, true>::_Head_base(_UHead&&) [with
_UHead = execution_context<int>&; long unsigned int _Idx = 0ul; _Head =
execution_context<int>]’:
/usr/lib/gcc/x86_64-pc-linux-gnu/7.0.0/include/g++-v7/tuple:235:57:   required
from ‘constexpr std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(const
std::_Tuple_impl<_Idx, _UElements ...>&) [with _UElements =
{execution_context<int>&&, int}; long unsigned int _Idx = 0ul; _Head =
execution_context<int>; _Tail = {int}]’
/usr/lib/gcc/x86_64-pc-linux-gnu/7.0.0/include/g++-v7/tuple:1041:60:   required
from ‘constexpr std::tuple<_T1, _T2>::tuple(std::tuple<_U1, _U2>&&) [with _U1 =
execution_context<int>&&; _U2 = int; typename std::enable_if<(std::_TC<true,
_T1, _T2>::_MoveConstructibleTuple<_U1, _U2>() && std::_TC<true, _T1,
_T2>::_ImplicitlyMoveConvertibleTuple<_U1, _U2>()), bool>::type <anonymous> =
1u; _T1 = execution_context<int>; _T2 = int]’
tup.cpp:10:70:   required from ‘execution_context<Args>::ret_tpl_t
execution_context<Args>::operator()() [with Args = {int};
execution_context<Args>::ret_tpl_t = std::tuple<execution_context<int>, int>]’
tup.cpp:15:6:   required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/7.0.0/include/g++-v7/tuple:87:35: error: use
of deleted function ‘constexpr execution_context<int>::execution_context(const
execution_context<int>&)’
  : _Head(std::forward<_UHead>(__h)) { }
                                   ^
tup.cpp:2:36: note: ‘constexpr execution_context<int>::execution_context(const
execution_context<int>&)’ is implicitly declared as deleted because
‘execution_context<int>’ declares a move constructor or move assignment
operator
 template <typename... Args> struct execution_context {
                                    ^~~~~~~~~~~~~~~~~


More information about the Gcc-bugs mailing list