$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: shunsuke (pstade.mb_at_[hidden])
Date: 2007-05-24 20:57:22
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