https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84062
Bug ID: 84062
Summary: error: no matching function for call to
'std::vector<option_s>::push_back(<brace-enclosed
initializer list>)
Product: gcc
Version: 5.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: daffra.claudio at gmail dot com
Target Milestone: ---
Created attachment 43251
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=43251&action=edit
source code where error7bug is generated
as you see in example below, g++ -std=c++11 fails compiler code,
when i assign a default value to a parameter in a struct definition
( i've tested with visual studio 2017 and all works good)
issue has generated in standard vectoru push back member
because it can not recognize struct correclty
g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=C:/TDM-GCC-64/bin/../libexec/gcc/x86_64-w64-mingw32/5.1.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-5.1.0/configure
--build=x86_64-w64-mingw32 --enable-targets=all
--enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable-libgomp
--enable-lto --enable-graphite --enable-cxx-flags=-DWINPTHREAD_STATIC
--disable-build-with-cxx --disable-build-poststage1-with-cxx
--enable-libstdcxx-debug --enable-threads=posix
--enable-version-specific-runtime-libs --enable-fully-dynamic-string
--enable-libstdcxx-threads --enable-libstdcxx-time --with-gnu-ld
--disable-werror --disable-nls --disable-win32-registry --prefix=/mingw64tdm
--with-local-prefix=/mingw64tdm --with-pkgversion=tdm64-1
--with-bugurl=http://tdm-gcc.tdragon.net/bugs
Thread model: posix
gcc version 5.1.0 (tdm64-1)
source code
#include <string>
#include <iostream>
#include <stdint.h>
#include <vector>
typedef struct option_s
{
int8_t parameter ; // <-- Works !
// int8_t parameter = 1 ; <--
ERROR : if i put default parameter, gcc gives me error in : vOption.push_back (
{ 1 } ) ;
} option_t ;
class Option
{
public:
std::vector<option_t> vOption ;
Option(void)
{
} ;
void add ( void )
{
vOption.push_back ( { 1 } ) ;
}
} zzz ;
int main ( void )
{
return 0 ;
}
Error Message
prova.cpp: In member function 'void Option::add()':
prova.cpp:29:32: error: no matching function for call to
'std::vector<option_s>::push_back(<brace-enclosed initializer list>)'
vOption.push_back ( { 1 } ) ;
^
In file included from
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/vector:64:0,
from prova.cpp:5:
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/stl_vector.h:913:7:
note: candidate: void std::vector<_Tp, _Alloc>::push_back(const value_type&)
[with _Tp = option_s; _Alloc = std::allocator<option_s>; std::vector<_Tp,
_Alloc>::value_type = option_s]
push_back(const value_type& __x)
^
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/stl_vector.h:913:7:
note: no known conversion for argument 1 from '<brace-enclosed initializer
list>' to 'const value_type& {aka const option_s&}'
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/stl_vector.h:931:7:
note: candidate: void std::vector<_Tp, _Alloc>::push_back(std::vector<_Tp,
_Alloc>::value_type&&) [with _Tp = option_s; _Alloc = std::allocator<option_s>;
std::vector<_Tp, _Alloc>::value_type = option_s]
push_back(value_type&& __x)
^
C:/TDM-GCC-64/lib/gcc/x86_64-w64-mingw32/5.1.0/include/c++/bits/stl_vector.h:931:7:
note: no known conversion for argument 1 from '<brace-enclosed initializer
list>' to 'std::vector<option_s>::value_type&& {aka option_s&&}'