[Bug c++/84368] New: [8 Regression] return type of generic lambda in variadic lambda in template is not deduced

benni.buch at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Feb 13 16:56:00 GMT 2018


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

            Bug ID: 84368
           Summary: [8 Regression] return type of generic lambda in
                    variadic lambda in template is not deduced
           Product: gcc
           Version: 8.0.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: benni.buch at gmail dot com
  Target Milestone: ---

template < typename ... T >
void sink(T ...){}

template < typename ... T >
void foo(T ... v){
    [](auto ... v){
        auto bar = [](auto, auto){ return 0; };
        sink(bar(v, T{}) ...);
    }(v ...);
}

int main(){
    foo(0);
}


$ g++ -std=c++14 main.cpp
main.cpp: In instantiation of 'foo(T ...) [with T = {int}]::<lambda(auto:1
...)> [with auto:1 = {int}]':
main.cpp:9:6:   required from 'void foo(T ...) [with T = {int}]'
main.cpp:13:10:   required from here
main.cpp:8:17: error: use of 'bar' before deduction of 'auto'
         sink(bar(v, T{}) ...);
              ~~~^~~~~~~~
$ g++ --version
g++ (GCC) 8.0.1 20180213 (experimental)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Known to work with GCC 5 and 6:

$ g++-6 --version
g++-6 (Ubuntu/Linaro 6.3.0-18ubuntu2~16.04) 6.3.0 20170519
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++-5 --version
g++-5 (Ubuntu 5.4.1-2ubuntu1~16.04) 5.4.1 20160904
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


More information about the Gcc-bugs mailing list