This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/70401] [c++1z on mingw]compile variadic template failed


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

--- Comment #4 from Rainer Emrich <rainer@emrich-ebersheim.de> ---
gcc-7.3.0 on x86_64-w64-mingw32 doesn't compile this code:

$ g++ -std=c++1z aa.cpp -o aa.exe
aa.cpp: In instantiation of 'std::ostream& operator<<(std::ostream&, const
std::tuple<_Tps ...>&) [with T = {long long unsigned int, long long unsigned
int, const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*}; std::ostream = std::basic_ostream<char>]':
aa.cpp:133:54:   required from here
aa.cpp:113:7: error: call of overloaded 'apply(const operator<<(std::ostream&,
const std::tuple<_Tps ...>&) [with T = {long long unsigned int, long long
unsigned int, const char*, long long unsigned int, const char*, const char*,
long long unsigned int, long long unsigned int, const char*, const char*, long
long unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*}; std::ostream =
std::basic_ostream<char>]::<lambda(auto:1&& ...)>&, const std::tuple<long long
unsigned int, long long unsigned int, const char*, long long unsigned int,
const char*, const char*, long long unsigned int, long long unsigned int, const
char*, const char*, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, const char*>&)' is ambiguous
  apply(printer,toprint);
  ~~~~~^~~~~~~~~~~~~~~~~
aa.cpp:105:6: note: candidate: auto apply(F&&, Tuple&&) [with F = const
operator<<(std::ostream&, const std::tuple<_Tps ...>&) [with T = {long long
unsigned int, long long unsigned int, const char*, long long unsigned int,
const char*, const char*, long long unsigned int, long long unsigned int, const
char*, const char*, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, const char*}; std::ostream =
std::basic_ostream<char>]::<lambda(auto:1&& ...)>&; Tuple = const
std::tuple<long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const
char*>&]
 auto apply(F&& f, Tuple&& t) {
      ^~~~~
In file included from aa.cpp:1:0:
d:\opt\devel\gnu\gcc\mingw_nt\x86_64-w64-mingw32\mingw-w64-runtime-trunk-svn\gcc-7.3.0\include\c++\7.3.0\tuple:1668:5:
note: candidate: constexpr decltype(auto) std::apply(_Fn&&, _Tuple&&) [with _Fn
= const operator<<(std::ostream&, const std::tuple<_Tps ...>&) [with T = {long
long unsigned int, long long unsigned int, const char*, long long unsigned int,
const char*, const char*, long long unsigned int, long long unsigned int, const
char*, const char*, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, const char*}; std::ostream =
std::basic_ostream<char>]::<lambda(auto:1&& ...)>&; _Tuple = const
std::tuple<long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const
char*>&]
     apply(_Fn&& __f, _Tuple&& __t)
     ^~~~~
aa.cpp: In instantiation of 'std::ostream& operator<<(std::ostream&, const
std::tuple<_Tps ...>&) [with T = {long long unsigned int, long long unsigned
int, const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const char*,
const char*, long long unsigned int, long long unsigned int, const char*, const
char*, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*};
std::ostream = std::basic_ostream<char>]':
aa.cpp:134:53:   required from here
aa.cpp:113:7: error: call of overloaded 'apply(const operator<<(std::ostream&,
const std::tuple<_Tps ...>&) [with T = {long long unsigned int, long long
unsigned int, const char*, long long unsigned int, const char*, const char*,
long long unsigned int, long long unsigned int, const char*, const char*, long
long unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const char*,
const char*, long long unsigned int, long long unsigned int, const char*, const
char*, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*};
std::ostream = std::basic_ostream<char>]::<lambda(auto:1&& ...)>&, const
std::tuple<long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const char*,
const char*, long long unsigned int, long long unsigned int, const char*, const
char*, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*>&)' is ambiguous
  apply(printer,toprint);
  ~~~~~^~~~~~~~~~~~~~~~~
aa.cpp:105:6: note: candidate: auto apply(F&&, Tuple&&) [with F = const
operator<<(std::ostream&, const std::tuple<_Tps ...>&) [with T = {long long
unsigned int, long long unsigned int, const char*, long long unsigned int,
const char*, const char*, long long unsigned int, long long unsigned int, const
char*, const char*, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, const char*, const char*,
long long unsigned int, long long unsigned int, const char*, const char*, long
long unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const char*,
const char*, long long unsigned int, long long unsigned int, const char*, const
char*, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*}; std::ostream = std::basic_ostream<char>]::<lambda(auto:1&&
...)>&; Tuple = const std::tuple<long long unsigned int, long long unsigned
int, const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const char*,
const char*, long long unsigned int, long long unsigned int, const char*, const
char*, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*>&]
 auto apply(F&& f, Tuple&& t) {
      ^~~~~
In file included from aa.cpp:1:0:
d:\opt\devel\gnu\gcc\mingw_nt\x86_64-w64-mingw32\mingw-w64-runtime-trunk-svn\gcc-7.3.0\include\c++\7.3.0\tuple:1668:5:
note: candidate: constexpr decltype(auto) std::apply(_Fn&&, _Tuple&&) [with _Fn
= const operator<<(std::ostream&, const std::tuple<_Tps ...>&) [with T = {long
long unsigned int, long long unsigned int, const char*, long long unsigned int,
const char*, const char*, long long unsigned int, long long unsigned int, const
char*, const char*, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, const char*, const char*,
long long unsigned int, long long unsigned int, const char*, const char*, long
long unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const char*,
const char*, long long unsigned int, long long unsigned int, const char*, const
char*, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*}; std::ostream = std::basic_ostream<char>]::<lambda(auto:1&&
...)>&; _Tuple = const std::tuple<long long unsigned int, long long unsigned
int, const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*, long
long unsigned int, const char*, const char*, long long unsigned int, long long
unsigned int, const char*, const char*, long long unsigned int, const char*,
long long unsigned int, long long unsigned int, const char*, long long unsigned
int, long long unsigned int, const char*, long long unsigned int, const char*,
const char*, long long unsigned int, long long unsigned int, const char*, const
char*, long long unsigned int, const char*, long long unsigned int, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, const char*, const char*, long long
unsigned int, long long unsigned int, const char*, const char*, long long
unsigned int, const char*, long long unsigned int, long long unsigned int,
const char*, long long unsigned int, long long unsigned int, const char*>&]
     apply(_Fn&& __f, _Tuple&& __t)
     ^~~~~

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]