https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116368
Bug ID: 116368
Summary: placeholder type deduction bug
Product: gcc
Version: 14.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: delacroix777 at proton dot me
Target Milestone: ---
The exact version of GCC:
gcc version 14.2.0 (Rev1, Built by MSYS2 project) - the latest version
package mingw-w64-ucrt-x86_64-gcc
The system type:
Windows 11 64-bit 23H2
The options given when GCC was configured/built:
"-Wall","-Wextra","-pedantic-errors","-std=c++23","-O2","-s","-static"
***
The problem is that the compiler does not generate any errors or warnings when
compiling the following code:
#include <iostream>
template <typename T, typename U> void foo(T t, U u)
{
auto a = t, b = u;
std::cout << a << ' ' << b;
}
int main()
{
foo(42, 3.14);
}
It seems to me that this is a violation of the ISO C++ (9.2.9.6.1):
" If the init-declarator-list contains more than one init-declarator, they
shall all form declarations of variables. The type of each declared variable is
determined by placeholder type deduction, and if the type that replaces the
placeholder type is not the same in each deduction, the program is ill-formed.
"
Other compilers give an error in this case.