Здравствуйте, comer, Вы писали:
C>Пытаюсь использовать using для шаблонной функции.
C>Такой вот пример:
C>C>struct A
C>{
C> template<class R>
C> void F(R)
C> { // строка 5
C> }
C>};
C>struct B: private A
C>{
C> using A::F; // строка 11
C>};
C>int main()
C>{
C> B b;
C> b.F(3); // строка 17
C> return 0;
C>}
C>
C>VC 6 и Comeau скомпилировали нормально. А вот gcc version 3.2 20020818 (prerelease), выдал сообщение:
C>C>...: In function `int main()':
C>...:5: `void A::F(R) [with R = int]' is inaccessible
C>...:17: within this context
C>
C>Самое печальное то что ошибку он выдал в строке 17. А не в строке 11, что было бы логичнго если GCC не может использовать using директиву для шаблонных функций
, заметьте, других функции F больше нет в классе A.
GCC поддерживает директиву using. Ошибка произошла в строке 17 , а не в строке 11 потому что С++ использует в случае с шаблонами так называемую позднюю компиляцию, а это означает, что компиляция шаблона откладывается до его первой инициализации.
Попробуй скомпилировать с подключением библиотеки lstdc++ и проверь расширение файла (для С++ файла должно быть *.С).