LINUX.ORG.RU

История изменений

Исправление 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 года назад, а развитие кода на С++ - это процесс довольно медленный, то можно сказать, что минусы вывода типов в С++ могли ещё не проявиться во всей мере.