
Thorsten Ottosen wrote:
I sometimes expect the correct convertibility for enable_if_convertible. Well, what surprised me is that msvc fails to compile value_type x = iter[c]; // 'iter[c]' returns a proxy which is convertible to value_type. if value_type has such a constructor.
You lost me again. There is far too little context to understand it properly.
An iterator's bracket operator may return unspecified type(a.k.a. proxy) which is convertible to its value_type. It can be summarized as follows: struct A // value_type { A() { } template<class X> A(X x) { x.f(); } // (1) }; struct B // proxy { operator A() const { return A(); } // (2) }; int main() { A a = B(); } msvc cannot compile this, preferring (1). (I maybe found yet another msvc bug?) So I tend to think a CopyConstructible type should implement the convertibility correctly. Regards, -- Shunsuke Sogame