Недавно я проверил простую следующую программу в онлайн-компиляторе. Смотрите демо-версию here. Он компилирует отлично & дает ожидаемый результат, но когда я тестировал его на Dev C++ IDE, он не срабатывает во время компиляции.Почему эта программа компилируется в C++ 14, но не в компиляторе C++ 11?
Вот моя программа:
#include <iostream>
class Test
{
int s=9;
public:
int get_s()
{
return s;
}
};
int main()
{
Test s;
Test& t{s}; // error in C++11 but not in C++14 why???
std::cout<<t.get_s();
}
Это дает мне следующее сообщение об ошибке:
[Error] invalid initialization of non-const reference of type 'Test&' from an rvalue of type '<brace-enclosed initializer list>'
Я также попробовал его на блоки кода 13,12 IDE & это дает мне ту же ошибку, как дает Dev C++.
Является ли это новой функцией C++ 14? Почему он не работает в компиляторе C++ 11?
[It is working] (http://coliru.stacked-crooked.com/a/4fbf7065dd424257). Возможно, что-то не хватает в компиляторе C++ 11-неполного? –
@MarcoA. да, он работает в компиляторе C++ 14, но не работает в компиляторе C++ 11. Вы пробовали эту программу в компиляторе C++ 0x? – Destructor
@meet Заметили ли вы, что ссылка использует '-std = C++ 11', а не' -std = C++ 14'? – hvd