
Steven Watanabe a écrit :
I would be helpful to see the definition of settings<>. Are any of it's template parameters or base classes in namespace mpl? Ok, yes. I suspect that the compiler is finding mpl::size by ADL. I don't think it ought to, but I'll look it up. I'd also like to know what happens with another compiler.
You got it right. settings was defined as : template< class S1 = bm::na,class S2 = bm::na,class S3 = bm::na, class S4 = bm::na,class S5 = bm::na,class S6 = bm::na, class S7 = bm::na,class S8 = bm::na,class S9 = bm::na > struct settings : bm::vector<S1,S2,S3,S4,S5,S6,S7,S8,S9> type; {}; I changed it to : template< class S1 = bm::na,class S2 = bm::na,class S3 = bm::na, class S4 = bm::na,class S5 = bm::na,class S6 = bm::na, class S7 = bm::na,class S8 = bm::na,class S9 = bm::na > struct settings { typedef bm::vector<S1,S2,S3,S4,S5,S6,S7,S8,S9> type; }; and modified the appropriate typedef in process_settings. Another such problems was raised in another of my matrix related case. When both where fixed, it worked flawlessy. I also made the test on VC++ 2008 with same results. The fact the compiler use ADL at this point is rather fishy as the whole matrix type should be enough. Thanks for the highlight, I was so deep in this matter for so long I didn't tought of the obvious. Joel FALCOU Research Engineer @ Institu d'Electronique Fondamentale Université PARIS SUD XI France