Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2005-05-26 12:30:36

"Peter Dimov" <pdimov_at_[hidden]> writes:

> David Abrahams wrote:
>> Howard Hinnant <hinnant_at_[hidden]> writes:
>>> I haven't dug into boost::is_pointer, but I'm guessing it involves a
>>> tentative binding to an ellipsis:
>>> template <class U> static two test(...);
>>> 5.2.2p7 says that binding a non-POD class type to an ellipsis has
>>> undefined behavior. CodeWarrior's behavior in this context is to try
>>> to pass the type by value by using the type's copy constructor, which
>>> in this case is private, and thus triggers the access error.
>>> Metrowerks::is_pointer has a much simpler implementation.
>> We should probably be forwarding to the metrowerks implementation on
>> 9.4, where it's available. Failing that we can check is_class first
>> and avoid the rest of the check in that case.
> I must be missing something. The trivial implementation of is_pointer:
> template<class T> struct is_pointer: mpl::false_ {};
> template<class T> struct is_pointer<T*>: mpl::true_ {};
> should work on everything except MSVC 6/7, right? So why isn't it being
> used?

Yeah, duh. Why not?

Dave Abrahams
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at