Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2013, 18:50   #1
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию Частичная специализация функции внутри шаблона

Здравствуйте!
Безуспешно пытаюсь частично специализировать шаблонную функцию внутри шаблонного класса на MINGW.
Код:
template <typename _A>
    struct Q2
    {
        template <typename _T>
            void f() {}

	template <>
	    void f<int>() {}    // В MSVC можно, в mingw нет.
    };
Вынести частичную специализацию наружу не получается (может руки кривые), что делать? Хочется без волшебства – доп. функции, f() вынести из Q2 и т.п.. Просто взять и сделать, аналогично MSVC.
UPD:
Наверное, в приведенном примере - явная специализация.

Последний раз редактировалось 220Volt; 15.05.2013 в 18:59.
220Volt вне форума Ответить с цитированием
Старый 15.05.2013, 18:52   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

в рамках 2008 стандарта не получится. Делегируй статик-хелперам.
Писать не оч удобно, но код эффективен
_Bers вне форума Ответить с цитированием
Старый 15.05.2013, 20:31   #3
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Спасибо. Жаль.
220Volt вне форума Ответить с цитированием
Старый 15.05.2013, 22:00   #4
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Можно ли вызвать функцию член класса из сторонней функции? Передать нужный this вручную.
Псевдокод:
Код:
void f(class Q *_this);

struct Q
{
    void method() {}
};

void f(Q *_this)
{
    Q::method(_this);
}
220Volt вне форума Ответить с цитированием
Старый 15.05.2013, 22:30   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2220Volt
Код:
void f(Q *_this) {
    _this->method();
}
заучился?
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 16.05.2013, 04:01   #6
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Да, что-то заклинило )))
220Volt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Специализация шаблона 220Volt Общие вопросы C/C++ 5 11.04.2013 18:03
получение ссылки на функцию из класса шаблона и передача ее как параметр шаблона pror0ck Общие вопросы C/C++ 7 17.06.2012 15:06
шаблонные методы шаблона. Специализация. _Bers Общие вопросы C/C++ 5 08.02.2012 01:38
Специализация шаблона Bubaleh Общие вопросы C/C++ 6 09.09.2011 12:01
C++ Специализация шаблона opensuse2008 Помощь студентам 7 07.06.2009 18:00