Boost logo

Boost :

From: Loïc Joly (loic.joly_at_[hidden])
Date: 2006-05-10 06:20:13

Peter Dimov a écrit :

>> However, with MSVC8.0, and at least when I compile with /clr, I seem
>> to have some problem with it : The null fct ptr seems to be coded
>> 0xffffffff. That is just fine in non /clr compilation, where it gets
>> evaluated as false when converted in boolean. But in /clr mode, it is
>> converted to true.
> I can't reproduce this problem with the following code:
> #include <boost/shared_ptr.hpp>
> #include <iostream>
> int main()
> {
> boost::shared_ptr<int> px;
> std::cout << ( px? true: false ) << std::endl;
> }
> compiled as /clr. The compiler does seem to encode a NULL member pointer
> as -1, but the example prints 0, as it should.

Here is finally some code that reproduces the problem. The compilation
options are the default ones when creating a "CLR console application"

// TestBoostSharde_ptrAnd.NET.cpp : main project file.

#include "stdafx.h"

#pragma unmanaged
#include "boost/shared_ptr.hpp"

class A{};
typedef boost::shared_ptr<A> APtr;

#pragma managed

using namespace System;

int main(array<System::String ^> ^args)
        A *a = NULL;
        APtr aPtr(a);
        if (aPtr.get())
        if (aPtr)
        return 0;

Is displays

Whereas it should display

Best regards,


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