<div dir="ltr">Thanks, that helped! I managed to sort out the rest in r226949. The typename in the typedef wasn't necessary according to clang and MSVC rejected it.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 23, 2015 at 2:13 PM, Lang Hames <span dir="ltr"><<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Reid,<div><br></div><div>This should be fixed in r226946. I'll keep my eye on the bots.<div><br></div><div>Cheers,</div><div>Lang.</div><div><br></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 23, 2015 at 2:10 PM, Lang Hames <span dir="ltr"><<a href="mailto:lhames@gmail.com" target="_blank">lhames@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Reid,<div><br></div><div>Thanks for the heads up. I'm going to remove a few of the constructor versions that are introducing the ambiguity. The fix should be in in a moment.</div><div><br></div><div>Cheers,</div><div>Lang.</div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 23, 2015 at 2:09 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">Having trouble figuring out how to fix the MSVC build after this. Here, have a wonderful compiler diagnostic:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">[22/231] Building CXX object lib\ExecutionEngine\Orc\CMakeFiles\LLVMOrcJIT.dir\OrcMCJITReplacement.cpp.obj</div><div class="gmail_extra">FAILED: C:\PROGRA~2\MICROS~4.0\VC\bin\cl.exe   /nologo /TP /DWIN32 /D_WINDOWS /W3   /MD /O2 /Ob2 -Ilib\ExecutionEngine\Orc -I..\lib\ExecutionEngine\Orc -Iinclude -I..\include    -UNDEBUG -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291 -wd4345 -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 -wd4722 -wd4800 -w14062 -we4238 /EHs-c- /GR- /showIncludes -DGTEST_HAS_RTTI=0 -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS /Folib\ExecutionEngine\Orc\CMakeFiles\LLVMOrcJIT.dir\OrcMCJITReplacement.cpp.obj /Fdlib\ExecutionEngine\Orc\CMakeFiles\LLVMOrcJIT.dir/ /FS -c ..\lib\ExecutionEngine\Orc\OrcMCJITReplacement.cpp</div><div class="gmail_extra">..\include\llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h(77) : error C2899: typename cannot be used outside a template declaration</div><div class="gmail_extra">d:\src\llvm\lib\executionengine\orc\OrcMCJITReplacement.h(127) : error C2668: 'llvm::ObjectLinkingLayer<llvm::OrcMCJITReplacement::NotifyObjectLoadedT>::ObjectLinkingLayer' : ambiguous call to overloaded function</div><div class="gmail_extra">        ..\include\llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h(138): could be 'llvm::ObjectLinkingLayer<llvm::OrcMCJITReplacement::NotifyObjectLoadedT>::ObjectLinkingLayer(std::function<void (llvm::ObjectLinkingLayerBase::ObjSetHandleT)>,std::function<std::unique_ptr<llvm::RTDyldMemoryManager,std::default_delete<_Ty>> (void)>)'</div><div class="gmail_extra">        with</div><div class="gmail_extra">        [</div><div class="gmail_extra">            _Ty=llvm::RTDyldMemoryManager</div><div class="gmail_extra">        ]</div><div class="gmail_extra">        ..\include\llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h(130): or       'llvm::ObjectLinkingLayer<llvm::OrcMCJITReplacement::NotifyObjectLoadedT>::ObjectLinkingLayer(NotifyLoadedFtor,std::function<std::unique_ptr<llvm::RTDyldMemoryManager,std::default_delete<_Ty>> (void)>)'</div><div class="gmail_extra">        with</div><div class="gmail_extra">        [</div><div class="gmail_extra">            NotifyLoadedFtor=llvm::OrcMCJITReplacement::NotifyObjectLoadedT</div><div class="gmail_extra">,            _Ty=llvm::RTDyldMemoryManager</div><div class="gmail_extra">        ]</div><div class="gmail_extra">        ..\include\llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h(123): or       'llvm::ObjectLinkingLayer<llvm::OrcMCJITReplacement::NotifyObjectLoadedT>::ObjectLinkingLayer(NotifyLoadedFtor,std::function<void (llvm::ObjectLinkingLayerBase::ObjSetHandleT)>)'</div><div class="gmail_extra">        with</div><div class="gmail_extra">        [</div><div class="gmail_extra">            NotifyLoadedFtor=llvm::OrcMCJITReplacement::NotifyObjectLoadedT</div><div class="gmail_extra">        ]</div><div class="gmail_extra">        while trying to match the argument list '(llvm::OrcMCJITReplacement::NotifyObjectLoadedT, llvm::OrcMCJITReplacement::NotifyFinalizedT)'</div><div class="gmail_extra">d:\src\llvm\lib\executionengine\orc\OrcMCJITReplacement.h(260) : error C2593: 'operator =' is ambiguous</div><div class="gmail_extra">        C:/PROGRA~2/MICROS~4.0/VC/include\set(180): could be 'std::set<const void *,std::less<_Kty>,std::allocator<_Kty>> &std::set<_Kty,std::less<_Kty>,std::allocator<_Kty>>::operator =(std::initializer_list<const void *>)'</div><div class="gmail_extra">        with</div><div class="gmail_extra">        [</div><div class="gmail_extra">            _Kty=const void *</div><div class="gmail_extra">        ]</div><div class="gmail_extra">        C:/PROGRA~2/MICROS~4.0/VC/include\set(139): or       'std::set<const void *,std::less<_Kty>,std::allocator<_Kty>> &std::set<_Kty,std::less<_Kty>,std::allocator<_Kty>>::operator =(std::set<_Kty,std::less<_Kty>,std::allocator<_Kty>> &&)'</div><div class="gmail_extra">        with</div><div class="gmail_extra">        [</div><div class="gmail_extra">            _Kty=const void *</div><div class="gmail_extra">        ]</div><div class="gmail_extra">        C:/PROGRA~2/MICROS~4.0/VC/include\set(123): or       'std::set<const void *,std::less<_Kty>,std::allocator<_Kty>> &std::set<_Kty,std::less<_Kty>,std::allocator<_Kty>>::operator =(const std::set<_Kty,std::less<_Kty>,std::allocator<_Kty>> &)'</div><div class="gmail_extra">        with</div><div class="gmail_extra">        [</div><div class="gmail_extra">            _Kty=const void *</div><div class="gmail_extra">        ]</div><div class="gmail_extra">        while trying to match the argument list '(llvm::OrcMCJITReplacement::SectionAddrSet, initializer-list)'</div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>