@@ -705,7 +705,9 @@ mutable struct OncePerProcess{T, F} <: Function
705705 return once
706706 end
707707end
708+ OncePerProcess {T} (initializer:: Type{U} ) where {T, U} = OncePerProcess {T, Type{U}} (initializer)
708709OncePerProcess {T} (initializer:: F ) where {T, F} = OncePerProcess {T, F} (initializer)
710+ OncePerProcess (initializer:: Type{U} ) where U = OncePerProcess {Base.promote_op(initializer), Type{U}} (initializer)
709711OncePerProcess (initializer) = OncePerProcess {Base.promote_op(initializer), typeof(initializer)} (initializer)
710712@inline function (once:: OncePerProcess{T,F} )() where {T,F}
711713 state = (@atomic :acquire once. state)
@@ -812,7 +814,9 @@ mutable struct OncePerThread{T, F} <: Function
812814 return once
813815 end
814816end
817+ OncePerThread {T} (initializer:: Type{U} ) where {T, U} = OncePerThread {T,Type{U}} (initializer)
815818OncePerThread {T} (initializer:: F ) where {T, F} = OncePerThread {T,F} (initializer)
819+ OncePerThread (initializer:: Type{U} ) where U = OncePerThread {Base.promote_op(initializer), Type{U}} (initializer)
816820OncePerThread (initializer) = OncePerThread {Base.promote_op(initializer), typeof(initializer)} (initializer)
817821@inline (once:: OncePerThread{T,F} )() where {T,F} = once[Threads. threadid ()]
818822@inline function getindex (once:: OncePerThread{T,F} , tid:: Integer ) where {T,F}
@@ -931,8 +935,10 @@ false
931935mutable struct OncePerTask{T, F} <: Function
932936 const initializer:: F
933937
938+ OncePerTask {T} (initializer:: Type{U} ) where {T, U} = new {T,Type{U}} (initializer)
934939 OncePerTask {T} (initializer:: F ) where {T, F} = new {T,F} (initializer)
935940 OncePerTask {T,F} (initializer:: F ) where {T, F} = new {T,F} (initializer)
941+ OncePerTask (initializer:: Type{U} ) where U = new {Base.promote_op(initializer), Type{U}} (initializer)
936942 OncePerTask (initializer) = new {Base.promote_op(initializer), typeof(initializer)} (initializer)
937943end
938944@inline function (once:: OncePerTask{T,F} )() where {T,F}
0 commit comments