diff options
author | Marco Poletti <poletti.marco@gmail.com> | 2017-12-27 08:41:17 +0000 |
---|---|---|
committer | Marco Poletti <poletti.marco@gmail.com> | 2017-12-27 08:41:38 +0000 |
commit | dad7ba8e69a1041e8b8315d189ed278b45f6f621 (patch) | |
tree | 25d83ef56b27e28d2a9bb960112352d4d3a09ca4 /include | |
parent | f47abcc3d897297ada2b16553d73459765fc52a3 (diff) | |
download | google-fruit-dad7ba8e69a1041e8b8315d189ed278b45f6f621.tar.gz |
Try to workaround some Visual Studio ICEs that appeared in the last Appveyor build.
Diffstat (limited to 'include')
-rw-r--r-- | include/fruit/impl/component_functors.defn.h | 2 | ||||
-rw-r--r-- | include/fruit/impl/injector/injector_storage.defn.h | 3 | ||||
-rw-r--r-- | include/fruit/impl/injector/injector_storage.h | 5 |
3 files changed, 8 insertions, 2 deletions
diff --git a/include/fruit/impl/component_functors.defn.h b/include/fruit/impl/component_functors.defn.h index dd62939..a2c6e8f 100644 --- a/include/fruit/impl/component_functors.defn.h +++ b/include/fruit/impl/component_functors.defn.h @@ -316,7 +316,7 @@ struct PreProcessRegisterProvider { using AnnotatedC = NormalizeType(SignatureType(AnnotatedSignature)); using AnnotatedCDeps = NormalizeTypeVector(SignatureArgs(AnnotatedSignature)); - using R = AddProvidedType(Comp, AnnotatedC, Bool<true>, AnnotatedCDeps, NormalizedNonConstTypesIn(SignatureArgs(AnnotatedSignature))); + using R = AddProvidedType(Comp, AnnotatedC, Bool<true>, AnnotatedCDeps, Id<NormalizedNonConstTypesIn(SignatureArgs(AnnotatedSignature))>); using type = If(Not(IsSame(Signature, SignatureFromLambda)), ConstructError(AnnotatedSignatureDifferentFromLambdaSignatureErrorTag, Signature, SignatureFromLambda), PropagateError(CheckInjectableType(RemoveAnnotations(SignatureType(AnnotatedSignature))), diff --git a/include/fruit/impl/injector/injector_storage.defn.h b/include/fruit/impl/injector/injector_storage.defn.h index 9a9626d..abfe720 100644 --- a/include/fruit/impl/injector/injector_storage.defn.h +++ b/include/fruit/impl/injector/injector_storage.defn.h @@ -705,7 +705,8 @@ struct InvokeConstructorWithInjectedArgVector<AnnotatedC(AnnotatedArgs...), frui // `bindings_begin' *is* used below, but when there are no Args some compilers report it as unused. (void) bindings_begin; C* p = outerConstructHelper(injector, allocator, - injector.lazyGetPtr<InjectorStorage::NormalizeType<AnnotatedArgs>>(deps, Indexes::value, bindings_begin) + injector.lazyGetPtr<typename InjectorStorage::TypeNormalizer<AnnotatedArgs>::type>( + deps, Indexes::value, bindings_begin) ...); return p; } diff --git a/include/fruit/impl/injector/injector_storage.h b/include/fruit/impl/injector/injector_storage.h index 1b36f91..c4cef9b 100644 --- a/include/fruit/impl/injector/injector_storage.h +++ b/include/fruit/impl/injector/injector_storage.h @@ -63,6 +63,11 @@ public: using NormalizeType = fruit::impl::meta::UnwrapType<fruit::impl::meta::Eval< fruit::impl::meta::NormalizeType(fruit::impl::meta::Type<T>) >>; + + template <typename T> + struct TypeNormalizer { + using type = NormalizeType<T>; + }; template <typename Signature> using SignatureType = fruit::impl::meta::UnwrapType<fruit::impl::meta::Eval< |