Changeset View
Changeset View
Standalone View
Standalone View
src/utils/lazy_val.h
Show All 32 Lines | 28 | public: | |||
---|---|---|---|---|---|
33 | } | 33 | } | ||
34 | 34 | | |||
35 | private: | 35 | private: | ||
36 | F _f; | 36 | F _f; | ||
37 | mutable decltype(_f()) value; | 37 | mutable decltype(_f()) value; | ||
38 | mutable bool valueRetrieved; | 38 | mutable bool valueRetrieved; | ||
39 | 39 | | |||
40 | public: | 40 | public: | ||
41 | #ifdef _MSC_VER | ||||
42 | operator auto() const -> decltype(_f()) | ||||
43 | #else | ||||
41 | operator decltype(_f()) () const | 44 | operator decltype(_f()) () const | ||
45 | #endif | ||||
42 | { | 46 | { | ||
43 | if (!valueRetrieved) { | 47 | if (!valueRetrieved) { | ||
44 | valueRetrieved = true; | 48 | valueRetrieved = true; | ||
45 | value = _f(); | 49 | value = _f(); | ||
46 | } | 50 | } | ||
47 | 51 | | |||
48 | return value; | 52 | return value; | ||
49 | } | 53 | } | ||
Show All 13 Lines |