Re: A quick question about Initializer-List in C++0x
On 9 Jun., 07:18, Mikael <mikael.olenf...@gmail.com> wrote:
I just tried to compile the following with gcc-4.5 in c++0x mode:
int main (int argc, char* argv[])
{
std::map<std::string, std::vector<std::string>> m {
{"Hello", {"Good", "World"}},
{"Goodbye", {"Rude", "World"}}
};
return 0;
}
However I get compilation errors when I do that
[..]
This must be a compiler error, the code should be well-formed
in C++0x. The defect becomes clearer, if you simplify your
example to
--------------------------
#include <vector>
#include <string>
template<typename T>
struct C {
C(std::initializer_list<T>){} // line 6
};
int main() {
std::vector<std::string> v{"Good", "World"};
C<std::vector<std::string>> c{{"Good", "World"}, {"Evil",
"Heaven"}}; // line 11
}
--------------------------
were you get a similar error:
c++ -std=c++0x -Wall main.cpp -o main
main.cpp: In function 'int main()':
main.cpp:11:69: error: no matching function for call to
'C<std::vector<std::basi
c_string<char> > >::C(<brace-enclosed initializer list>)'
main.cpp:6:3: note: candidates are:
C<T>::C(std::initializer_list<_Tp>) [with T
= std::vector<std::basic_string<char> >]
main.cpp:5:10: note:
C<std::vector<std::basic_string<char> > >::
C(const C<std::vector<std::basic_string<char> > >&)
A pre-version of 4.5.1 compiles my example
successfully.
HTH & Gretings from Bremen,
Daniel Kr?gler
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]