@@ -735,7 +735,9 @@ mutable struct OncePerProcess{T, F} <: Function
735735        return  once
736736    end 
737737end 
738+ OncePerProcess {T} (initializer:: Type{U} ) where  {T, U} =  OncePerProcess {T, Type{U}} (initializer)
738739OncePerProcess {T} (initializer:: F ) where  {T, F} =  OncePerProcess {T, F} (initializer)
740+ OncePerProcess (initializer:: Type{U} ) where  U =  OncePerProcess {Base.promote_op(initializer), Type{U}} (initializer)
739741OncePerProcess (initializer) =  OncePerProcess {Base.promote_op(initializer), typeof(initializer)} (initializer)
740742@inline  function  (once:: OncePerProcess{T,F} )() where  {T,F}
741743    state =  (@atomic  :acquire  once. state)
@@ -842,7 +844,9 @@ mutable struct OncePerThread{T, F} <: Function
842844        return  once
843845    end 
844846end 
847+ OncePerThread {T} (initializer:: Type{U} ) where  {T, U} =  OncePerThread {T,Type{U}} (initializer)
845848OncePerThread {T} (initializer:: F ) where  {T, F} =  OncePerThread {T,F} (initializer)
849+ OncePerThread (initializer:: Type{U} ) where  U =  OncePerThread {Base.promote_op(initializer), Type{U}} (initializer)
846850OncePerThread (initializer) =  OncePerThread {Base.promote_op(initializer), typeof(initializer)} (initializer)
847851@inline  (once:: OncePerThread{T,F} )() where  {T,F} =  once[Threads. threadid ()]
848852@inline  function  getindex (once:: OncePerThread{T,F} , tid:: Integer ) where  {T,F}
@@ -961,8 +965,10 @@ false
961965mutable struct  OncePerTask{T, F} <:  Function 
962966    const  initializer:: F 
963967
968+     OncePerTask {T} (initializer:: Type{U} ) where  {T, U} =  new {T,Type{U}} (initializer)
964969    OncePerTask {T} (initializer:: F ) where  {T, F} =  new {T,F} (initializer)
965970    OncePerTask {T,F} (initializer:: F ) where  {T, F} =  new {T,F} (initializer)
971+     OncePerTask (initializer:: Type{U} ) where  U =  new {Base.promote_op(initializer), Type{U}} (initializer)
966972    OncePerTask (initializer) =  new {Base.promote_op(initializer), typeof(initializer)} (initializer)
967973end 
968974@inline  function  (once:: OncePerTask{T,F} )() where  {T,F}
0 commit comments