[Bug libstdc++/93121] std::bit_cast missing

2020-06-09 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93121

Lyberta  changed:

   What|Removed |Added

 CC||lyberta at lyberta dot net

--- Comment #2 from Lyberta  ---
This should block bug 88322

[Bug c++/93638] [concepts] Dependent names in requires clause reported as different types when function definition is not inline

2020-06-09 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93638

Lyberta  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|UNCONFIRMED |RESOLVED

--- Comment #2 from Lyberta  ---
I have checked my codebase and found that all of my problematic cases now
compile cleanly. This bug seems to be fixed.

[Bug c++/67491] [meta-bug] concepts issues

2020-06-09 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67491
Bug 67491 depends on bug 93638, which changed state.

Bug 93638 Summary: [concepts] Dependent names in requires clause reported as 
different types when function definition is not inline
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93638

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

[Bug libstdc++/93983] New: std::filesystem::path is not concept-friendly

2020-02-29 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93983

Bug ID: 93983
   Summary: std::filesystem::path is not concept-friendly
   Product: gcc
   Version: 10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lyberta at lyberta dot net
  Target Milestone: ---

#include 
#include 

struct Foo
{
Foo(const std::filesystem::path& p);
};

static_assert(std::copyable);

Error:
In file included from :1:

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/bits/stl_iterator_base_types.h:
In instantiation of 'struct std::iterator_traits':

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/bits/fs_path.h:84:11:
  required by substitution of 'template using
__is_path_iter_src = std::__and_::type, char>,
std::is_same::type, char8_t>, std::is_same::type, wchar_t>,
std::is_same::type, char16_t>, std::is_same::type, char32_t> >,
std::is_base_of > [with _Iter = Foo; _Iter_traits =
std::iterator_traits]'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/bits/fs_path.h:91:5:
  required by substitution of 'template
std::filesystem::__cxx11::__detail::__is_path_iter_src<_Iter>
std::filesystem::__cxx11::__detail::__is_path_src(_Iter, int) [with _Iter =
Foo]'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/bits/fs_path.h:115:29:
  required from 'struct
std::filesystem::__cxx11::__detail::__constructible_from'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/type_traits:138:12:
  required from 'struct std::__and_ >,
std::filesystem::__cxx11::__detail::__constructible_from >'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/type_traits:143:12:
  required from 'struct std::__and_ >, std::__not_ >,
std::filesystem::__cxx11::__detail::__constructible_from >'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/bits/fs_path.h:119:11:
  required by substitution of 'template using _Path =
typename std::enable_if >::type,
std::filesystem::__cxx11::path> >, std::__not_::type> >,
std::filesystem::__cxx11::__detail::__constructible_from<_Tp1, _Tp2> >::value,
std::filesystem::__cxx11::path>::type [with _Tp1 = Foo; _Tp2 = void]'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/bits/fs_path.h:219:7:
  required by substitution of 'template
std::filesystem::__cxx11::path::path(const _Source&,
std::filesystem::__cxx11::path::format) [with _Source = Foo; _Require =
]'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/type_traits:901:30:
  required from 'struct std::__is_constructible_impl'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/type_traits:906:12:
  required from 'struct std::is_constructible'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/type_traits:3107:25:
  required from 'constexpr const bool std::is_constructible_v'

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/concepts:139:30:  
required from here

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/concepts:139:30:
error: the value of 'std::is_constructible_v' is not usable in a
constant expression

  139 |   = destructible<_Tp> && is_constructible_v<_Tp, _Args...>;

  |  ^

In file included from
/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/concepts:44,

 from :1:

/opt/compiler-explorer/gcc-trunk-20200229/include/c++/10.0.1/type_traits:3107:25:
note: 'std::is_constructible_v' used in its own initializer

 3107 |   inline constexpr bool is_constructible_v =

  | ^~

[Bug c++/93638] New: [concepts] Dependent names in requires clause reported as different types when function definition is not inline

2020-02-09 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93638

Bug ID: 93638
   Summary: [concepts] Dependent names in requires clause reported
as different types when function definition is not
inline
   Product: gcc
   Version: 10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lyberta at lyberta dot net
  Target Milestone: ---

This happens a lot but I can't pinpoint exact cases. Here's minimal repro for
one case:

#include 

template 
class A
{
using type = int;

template 
requires std::same_as
void Foo();
};

template 
template 
requires std::same_as::type, U>
void A::Foo()
{
}

error: no declaration matches 'void A::Foo()'

[Bug c++/93207] New: [concepts] Variadic concepts refuse no compile when function definition is not inline

2020-01-08 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93207

Bug ID: 93207
   Summary: [concepts] Variadic concepts refuse no compile when
function definition is not inline
   Product: gcc
   Version: 10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lyberta at lyberta dot net
  Target Milestone: ---

template 
concept C = true;

struct S
{
template 
void f()
requires C;
};

template 
void S::f()
requires C
{
}

error: no declaration matches 'void S::f() requires  C'
void S::f()
 ^
note: candidate is: 'template void S::f() requires  C'
void f()
 ^

[Bug demangler/85309] demangler failed with signal 11

2019-12-06 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85309

Lyberta  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #2 from Lyberta  ---
Yes. Doesn't crash anymore.

[Bug demangler/85309] New: demangler failed with signal 11

2018-04-09 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85309

Bug ID: 85309
   Summary: demangler failed with signal 11
   Product: gcc
   Version: 8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: demangler
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lyberta at lyberta dot net
  Target Milestone: ---

Try to run my C++17 application under GDB I get:

/build/gdb-uGdIdO/gdb-7.12/gdb/cp-support.c:1600: demangler-warning: unable to
demangle
'_ZSt7forwardIRZN3ftz6Engine20ClientNetworkHandler13ProcessEventsEvEUlRT_E_EOS3_RNSt16remove_referenceIS3_E4typeE'
(demangler failed with signal 11)
Unable to dump core, use `ulimit -c unlimited' before executing GDB next time.
/build/gdb-uGdIdO/gdb-7.12/gdb/cp-support.c:1615: demangler-warning: unable to
demangle
'_ZSt7forwardIRZN3ftz6Engine20ClientNetworkHandler13ProcessEventsEvEUlRT_E_EOS3_RNSt16remove_referenceIS3_E4typeE'
(demangler failed with signal 11)

It is a lambda inside ftz::Engine::ClientNetworkHandler::ProcessEvents.

[Bug libstdc++/81190] New: std::optional doesn't compile with containers that have noncopyable types

2017-06-23 Thread lyberta at lyberta dot net
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81190

Bug ID: 81190
   Summary: std::optional doesn't compile with containers that
have noncopyable types
   Product: gcc
   Version: 7.1.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: lyberta at lyberta dot net
  Target Milestone: ---

The following code will compile perfectly with std::experimental::optional but
will produce compiler errors with std::optional:

#include 
#include 
#include 
#include 

class Foo
{
public:
Foo(std::unique_ptr a)
{
m1.emplace(42, std::move(a));
}
private:
std::map<int, std::unique_ptr> m1;
};

int main()
{
std::optional opt;
opt.emplace(std::make_unique(42));
opt = std::nullopt;
}