@@ -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