Boost logo

Boost :

From: AlisdairM (alisdair.meredith_at_[hidden])
Date: 2006-12-31 19:35:16


I have just supplied John with a new defect macro and test case to
detect compilers that (do not) support 2-phase name lookup with
templates, but it would be really helpful if someone who is more
familiar with the problem (and access to conforming compilers!) can
verify the test for us!

The test case is in

boost/libs/config/boost_no_two_phase_name_lookup.ipp

and currently the code looks like:

template< class T >
struct base {
    int call() {
        return 1;
    }
};

int call() {
    return 0;
}

template< class T >
struct derived : base< T > {
    int call_test() {
        return call();
    }
};

int test()
{
    derived< int > d;
    return d.call_test();
}

I believe a conforming compiler should only find the 'free' function,
where a broken compiler will typically call the function from its base
class template.

Also, beware of config test failures until the various compiler config
headers are updated. This should also give us a good idea of whether
the right compilers are being flagged!

-- 
AlisdairM

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk