?

Log in

No account? Create an account

Эмуляция ключевого слова static из D на макросах - Excelsior

Aug. 28th, 2013

02:10 pm - Эмуляция ключевого слова static из D на макросах

Previous Entry Share Next Entry

Comments:

From:Valentin Budaev
Date:August 28th, 2013 07:13 pm (UTC)
(Link)
Я как понял, оно функцию на самом деле не проверяет, а просто начинает ее выполнять до тех пор, пока не встретится запрещенная инструкция, если не встретилась - все ок, если встретилась - бросим ошибку, верно?
(Reply) (Parent) (Thread)
[User Picture]
From:xeno_by
Date:August 28th, 2013 07:14 pm (UTC)
(Link)
Я тоже так понял.
(Reply) (Parent) (Thread)
[User Picture]
From:thedeemon
Date:August 29th, 2013 06:40 am (UTC)
(Link)
Не должно. В D есть вывод и проверка чистоты функции. Можно пометить функцию как pure, и компилятор ее проверит, выдав ошибку, если она не.
(Reply) (Parent) (Thread)
From:Valentin Budaev
Date:August 29th, 2013 09:33 am (UTC)
(Link)
Я вот из этого исходил:

> Note that the above restrictions apply only to expressions which are actually executed.

То есть с одним аргументом она pure (и можно подставлять), а с другим - non-pure, уже нельзя.

Но это не плохо, хорошо даже - корректность гарантируется все равно, проверится все один фиг в компайлтайме, зато гибкость выше.
(Reply) (Parent) (Thread)
[User Picture]
From:xeno_by
Date:August 29th, 2013 09:35 am (UTC)
(Link)
:)
(Reply) (Parent) (Thread)
[User Picture]
From:thedeemon
Date:August 29th, 2013 10:25 am (UTC)
(Link)
А, и правда, судя по приведенному там примеру. Удивительно.
(Reply) (Parent) (Thread)