Цитата(FCM @ 13.2.2013, 09:18 ) | 1) kemiisto, спасибо! Это то что я высматривал, да не высмотрел (надо мне чего-нибудь выпить для повышения внимательности |
Да уж, стандарт написан суровым языком.
Цитата(FCM @ 13.2.2013, 09:18 ) | Что касается Intel, посмотри, как он себя поведет, если в твоем примере определение типа изменить так (что совершенно законно) |
Видимо, баг в компиляторе. Пропускает без ошибок. А gfortran ругается, как и положено.
Цитата(FCM @ 13.2.2013, 09:18 ) | Однако перегрузка, в отличие от default-контсруктора, не может использоваться при инициализации. |
Есть такое дело. Это, вроде, никак не обойти. Объявление переменно и её инициализация - две совсем разные истории. Едиснтвенное, что можно сделать это инициализировать поля неким значением по-умолчанию:
Код | TYPE foo_bar PRIVATE INTEGER :: i = 0 END TYPE foo_bar
|
тогда можно вызывать конструктор по-умолчанию даже при наличии PRIVATE компонент:
Код | TYPE(foo_bar) :: test_bar = foo_bar()
|
Но такая инициализация ограничена некими константными значениями. Единственный выигрыш тут в том, что сразу после создания и одновременной инициализации объект валиден. |