Форум программистов, компьютерный форум CyberForum.ru

Что делает код? - C++

Восстановить пароль Регистрация
 
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
21.05.2014, 10:35     Что делает код? #1
цитата из переведённой книги Александреску по языку D:
"Если кто-то из ваших коллег прокачал самоуверенность до уровня Супермена,
спросите его, что делает код object.template fun<arg>(), и вы увидите
криптонит в действии."
И что же он делает?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.05.2014, 11:06     Что делает код? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
struct foo
{   
    template<class T>
    void fun()
    {
        std::cout << "foo::fun<T>()\n";
    }
};
 
template<class T>
void bar(T object)
{
    object.fun<int>(); //complile error
    object.template fun<int>(); //ok
}
 
int main()
{
    foo f;
    bar(f);
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
struct foo
{   
    typedef int inner_foo;
};
 
template<class T>
struct bar
{
    //typedef typename T::inner_foo inner_bar; //compile error
    typedef typename T::inner_foo inner_bar; //ok
    
    inner_bar b;
};
 
int main()
{
    bar<foo> b;
}
из той же опреры
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.05.2014, 11:07     Что делает код? #3
Я даже не знаю как это проще объяснить, но

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A
{
public:
   template<typename U>
   void function() const {}
};
 
template<typename T>
void f(const T& p)
{
   p.template function<T>();
}
 
int main()
{
   A a;
   f(a);
}
Попробуйте без template. А так же в догонку: http://stackoverflow.com/questions/6...ename-keywords читать в ответе на тему template.
Tulosba
21.05.2014, 15:05
  #4

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
C++
1
2
//typedef typename T::inner_foo inner_bar; //compile error 
typedef typename T::inner_foo inner_bar; //ok
Найди 10 различий.

ForEveR, с возвращением

Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.05.2014, 17:48     Что делает код? #5
Цитата Сообщение от Tulosba Посмотреть сообщение
Найди 10 различий.
угу, спс
C++
1
2
//typedef T::inner_foo inner_bar; //compile error 
typedef typename T::inner_foo inner_bar; //ok
Yandex
Объявления
21.05.2014, 17:48     Что делает код?
Ответ Создать тему
Опции темы

Текущее время: 02:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru