On Wednesday, 17 May 2017 at 07:08:07 UTC, bauss wrote:
On Wednesday, 17 May 2017 at 03:08:39 UTC, Timothee Cour wrote:
NOTE: curious about both cases:
* thread local
* shared

On Tue, May 16, 2017 at 8:04 PM, Timothee Cour <thelastmamm...@gmail.com> wrote:
what's the best D equivalent of C++11's function local static initialization?
```
void fun(){
  static auto a=[](){
    //some code
   return some_var;
  }
}
```

(C++11 guarantees thread safety)

I don't know the exact equivalent, mostly because I don't really know what the C++ statement does tbh. Tried to look it up real quick, but can't seem to find anything actual information on it.

It initializes a global variable "a" once from an unnamed class object with a "opCall" style method on it.

Lambdas in C++ are regular objects with some syntactical sugar over it.

http://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables

«If multiple threads attempt to initialize the same static local variable concurrently, the initialization occurs exactly once (similar behavior can be obtained for arbitrary functions with std::call_once). Note: usual implementations of this feature use variants of the double-checked locking pattern, which reduces runtime overhead for already-initialized local statics to a single non-atomic boolean comparison.»

Reply via email to