From: Itay Maman (itay_maman_at_[hidden])
Date: 2002-07-21 11:23:07
"David Abrahams" <david.abrahams_at_[hidden]> wrote in message
> From: "Douglas Gregor" <gregod_at_[hidden]>
> That was my understanding also. Incidentally, I recently implemented
> extract<> for Boost.Python.
> extract<> is a class template which admits the following uses:
> int y = extract<int>(x);
> extract<int> xint((z));
> if (xint.check())
> int i = xint();
> return extract<foo&>(z);
> I realize that poses some problems for unification, since it's not
> to non-intrusively customize constructors for a single class template. I'm
> willing to discuss changes, if neccessary.
(i) Is it in the CVS?
(ii) There's this MSVC namespace-related bug, which makes it impossible to
use extract<T>(x). The workaround I have used so far, is to pass T as a
dummy parameter, i.e: extract(x, boost::type<T>());
I wonder if there are other workarounds which will not affect the interface
of the function?
The program below illustrates the problem. When *1* is uncommented
everything is fine, but if *2* is active, the compiler stops:
"main.cpp(23) : error C2062: type 'int' unexpected"
void func(short )
std::cout << "Hi" << std::endl;
} // namespace test_site
// using namespace test_site; // *1* - Ok on MSVC6
using test_site::func; // *2* - Err on MSVC6
Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk