Следующие компиляции с помощью компилятора Microsoft C ++ (VS 15.5.6 --std = c ++ 14) вместо выдачи ожидаемой ошибки.
#include <string>
template<class type>
class Foo {
public:
Foo(type x, std::string y)
: x(x)
, y(y)
{}
type x;
std::string y;
};
template<class type>
class Bar {
public:
// this line should produce a compile error
Foo<type> f = { 1, 2, 3 };
};
int main() {
Bar<double> b;
// b.x is some random number
// b.y can't be inspected (probably garbage)
}
Компиляция с g ++ 6.3 приводит к
could not convert '{1, 2, 3}' from '<brace-enclosed initializer list>' to 'Foo<std::__cxx11::basic_string<char> >'
Это ошибка компилятора в Visual studio?