История изменений
Исправление den73, (текущая версия) :
А вообще, даже по примеру из описания С++ 11 в Википедии видно, что новшество неоднозначной полезности
#include <vector>
int main()
{
const std::vector<int> v(1);
auto a = v[0]; // тип a - int
decltype(v[0]) b = 1; // тип b - const int& (возвращаемое значение
// std::vector<int>::operator[](size_type) const)
auto c = 0; // тип c - int
auto d = c; // тип d - int
decltype(c) e; // тип e - int, тип сущности, именованной как c
decltype((c)) f = c; // тип f - int&, так как (c) является lvalue
decltype(0) g; // тип g - int, так как 0 является rvalue
}
Это в примере подписаны комментарии, а как читать этот код, если комментариев нет? Нужно втыкать в каждую строчку, да ещё и есть шанс ошибиться. Получается, код становится легче писать, но труднее читать. Крайнее проявление этого явления - write only code, как раз от него вроде и Perl умер, насколько я понимаю. Это случилось не сразу, сначал Perl хорошо попёр. Потом эта проблема накопилась и капец. Хотя я не настолько в теме Perl, могу и ошибаться. В случае С++, поскольку стандарт принят 4 года назад, а развитие кода на С++ - это процесс довольно медленный, то можно сказать, что минусы вывода типов в С++ могли ещё не проявиться во всей мере.
Т.е., когда мы говорим про вывод типов, то мы должны этот минус тоже иметь в виду. И на опциональную типизацию он тоже вполне распространяется.
Исправление den73, :
А вообще, даже по примеру из описания С++ 11 в Википедии видно, что новшество неоднозначной полезности
#include <vector>
int main()
{
const std::vector<int> v(1);
auto a = v[0]; // тип a - int
decltype(v[0]) b = 1; // тип b - const int& (возвращаемое значение
// std::vector<int>::operator[](size_type) const)
auto c = 0; // тип c - int
auto d = c; // тип d - int
decltype(c) e; // тип e - int, тип сущности, именованной как c
decltype((c)) f = c; // тип f - int&, так как (c) является lvalue
decltype(0) g; // тип g - int, так как 0 является rvalue
}
Это в примере подписаны комментарии, а как читать этот код, если комментариев нет? Нужно втыкать в каждую строчку, да ещё и есть шанс ошибиться. Получается, код становится легче писать, но труднее читать. Крайнее проявление этого явления - write only code, как раз от него вроде и Perl умер, насколько я понимаю. Это случилось не сразу, сначал Perl хорошо попёр. Потом эта проблема накопилась и капец. Хотя я не настолько в теме Perl, могу и ошибаться. В случае С++, поскольку стандарт принят 3 года назад, а развитие кода на С++ - это процесс довольно медленный, то можно сказать, что минусы вывода типов в С++ могли ещё не проявиться во всей мере.
Т.е., когда мы говорим про вывод типов, то мы должны этот минус тоже иметь в виду. И на опциональную типизацию он тоже вполне распространяется.
Исправление den73, :
А вообще, даже по примеру из описания С++ 11 в Википедии видно, что новшество неоднозначной полезности
#include <vector>
int main()
{
const std::vector<int> v(1);
auto a = v[0]; // тип a - int
decltype(v[0]) b = 1; // тип b - const int& (возвращаемое значение
// std::vector<int>::operator[](size_type) const)
auto c = 0; // тип c - int
auto d = c; // тип d - int
decltype(c) e; // тип e - int, тип сущности, именованной как c
decltype((c)) f = c; // тип f - int&, так как (c) является lvalue
decltype(0) g; // тип g - int, так как 0 является rvalue
}
Это в примере подписаны комментарии, а как читать этот код, если комментариев нет? Нужно втыкать в каждую строчку, да ещё и есть шанс ошибиться. Получается, код становится легче писать, но труднее читать. Крайнее проявление этого явления - write only code, как раз от него и Perl умер, насколько я понимаю. Perl умер от неё не сразу, а был начальный период энтузиазма, как я понял. Потом эта проблема накопилась и капец. Поскольку стандарт принят 3 года назад, а развитие кода на С++ - это процесс довольно медленный, то можно сказать, что минусы вывода типов в С++ могли ещё не проявиться во всей мере.
Исходная версия den73, :
А вообще, даже по примеру из описания С++ 11 в Википедии видно, что новшество неоднозначной полезности
#include <vector>
int main()
{
const std::vector<int> v(1);
auto a = v[0]; // тип a - int
decltype(v[0]) b = 1; // тип b - const int& (возвращаемое значение
// std::vector<int>::operator[](size_type) const)
auto c = 0; // тип c - int
auto d = c; // тип d - int
decltype(c) e; // тип e - int, тип сущности, именованной как c
decltype((c)) f = c; // тип f - int&, так как (c) является lvalue
decltype(0) g; // тип g - int, так как 0 является rvalue
}
Это в примере подписаны комментарии, а как читать этот код? Нужно втыкать в каждую строчку, да ещё и есть шанс ошибиться. Получается, код становится легче писать, но труднее читать. Крайнее проявление этого явления - write only code, как раз от него и Perl умер, насколько я понимаю. Perl умер от неё не сразу, а был начальный период энтузиазма, как я понял. Потом эта проблема накопилась и капец. Поскольку стандарт принят 3 года назад, а развитие кода на С++ - это процесс довольно медленный, то можно сказать, что минусы вывода типов в С++ могли ещё не проявиться во всей мере.