The c++ compiler does not seem to understand using statements of a template 
function in a base class as shown in the example below. I've got one workaround 
commented out. Are there any other alternative ways of using the 'using' 
statement that the compiler will understand, as my workaround is rather verbose 
and prone to error? Is this a known bug and if not, where is the best place to 
file the bug. I've tried versions 11, 12, and 12.1.

William

$ cat using_bug.cxx 
#include <vector>

class MyVector : private std::vector<double> {
public:
//      template <class InputIterator> void assign(InputIterator first, 
InputIterator last) { std::vector<double>::assign<InputIterator>(first, last); }
    using std::vector<double>::assign;
};

int main(int /*argc*/, char* /*argv*/ []) {
    MyVector retval;
    const double *begin = 0;
    const double *end = 0;
    retval.assign<const double *>(begin, end);
    return 0;
}

$ /sbcimp/run/tp/sun/SUNWspro/v12.1-20090630/bin/CC -c -mt -xlibmopt -Bdynamic 
-xO5  -library=stlport4  +w -D_SOLARIS_ -Bdynamic using_bug.cxx
"using_bug.cxx", line 13: Error: std::vector<double>::assign<const 
double*>(const double*, const double*) is not accessible from main(int, char**).
1 Error(s) detected.
-- 
This message posted from opensolaris.org

Reply via email to