Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
1

Функции-члены с "ref-qualifier"

26.08.2013, 01:48. Показов 1233. Ответов 2

Author24 — интернет-сервис помощи студентам
Собственно, компилируя с помощью g++ 4.8.1 следующий код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <type_traits>
 
 
int main() {
   struct dummy {
      
      void one() {}
 
      void two() & {}
 
      void three() && {}
   };
 
   std::cout << std::boolalpha;
   std::cout << std::is_member_function_pointer<decltype(&dummy::one)>::value << std::endl;
   std::cout << std::is_member_function_pointer<decltype(&dummy::two)>::value << std::endl;
   std::cout << std::is_member_function_pointer<decltype(&dummy::three)>::value << std::endl;
}
http://ideone.com/Z0t2Cp
получаю вывод
Код
true
false
false
т.е. &dummy::two и &dummy::three - это как бы уже и не указатели на функции-члены... так и должно быть?

Добавлено через 17 минут
+ ещё так: http://ideone.com/PHcaHO
В общем что-то я уже запутался
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2013, 01:48
Ответы с готовыми решениями:

[xvalue][msvs/gcc][bug] member function with ref-qualifier
добрый вечер. следующий код работает как и ожидается. и прекрасно компиляется gcc: ...

Сделать задачу, используя структуру содержащую члены-данные и члены-функции
Решить задачу, используя структуру содержащую члены-данные и члены-функции. Исходная ...

для задачи нужно использовать,структуру содержащую члены-данные и члены-функции
на основе данных входного файла составить инвентарную ведомость игрушек,включив следующие...

структуры содержащие члены-данные и члены- функции
Помогите пожалуйста!!!:cry: На основе данного входного файла составить список сотрудников...

2
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.08.2013, 02:54 2
mingw 4.8.1

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<typename>
    struct __is_member_function_pointer_helper
    : public false_type { };
 
  template<typename _Tp, typename _Cp>
    struct __is_member_function_pointer_helper<_Tp _Cp::*>
    : public integral_constant<bool, is_function<_Tp>::value> { };
 
  /// is_member_function_pointer
  template<typename _Tp>
    struct is_member_function_pointer
    : public integral_constant<bool, (__is_member_function_pointer_helper<
                      typename remove_cv<_Tp>::type>::value)>
    { };
is_member_function_pointer тянет is_function, лезем туда
Кликните здесь для просмотра всего текста
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
25
26
27
28
29
30
31
32
33
34
35
36
/// is_function
  template<typename>
    struct is_function
    : public false_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes...)>
    : public true_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes......)>
    : public true_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes...) const>
    : public true_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes......) const>
    : public true_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes...) volatile>
    : public true_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes......) volatile>
    : public true_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes...) const volatile>
    : public true_type { };
 
  template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes......) const volatile>
    : public true_type { };

специализаций для rvalue/lvalue for this нет, похоже что баг, в стандарт сейчасть лезть влом

Добавлено через 1 минуту

Не по теме:

и что за специализации is_function с 6-ю точками?:D



Добавлено через 3 минуты
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>
#include <type_traits>
 
struct dummy {
      
      void one() { std::cout << "one\n"; }
 
      void two() & { std::cout << "two\n"; }
 
      void three() && { std::cout << "tree\n"; }
   }; 
 
namespace std {
 
template<typename _Res, typename... _ArgTypes>
    struct is_function<_Res(_ArgTypes...)&&>
    : public true_type { };
}
 
int main() {
   std::cout << std::boolalpha
             << std::is_member_function_pointer<decltype(&dummy::three)>::value 
             << std::endl;
}
http://ideone.com/AlZXON
1
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
26.08.2013, 03:34  [ТС] 3
Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
похоже что баг
Тогда буду считать что так пока

Добавлено через 6 минут

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
и что за специализации is_function с 6-ю точками?
это для ф-ии с элипсисом: http://stackoverflow.com/quest... g-of-token мда :/

2
26.08.2013, 03:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2013, 03:34
Помогаю со студенческими работами здесь

Структура содержащая члены-данные и члены-функции
Помогите если не трудно))) Задание - Решить задачу,используя структуру содержащую члены-данные и...

класс «Строка» (данные-члены класса – строчка, функции-члены класса – операции)
Помогите пожалйуста с реализацией программы... Реализовать класс «Строка» (данные-члены класса –...

invalid qualifier при попытке определить длину массива внутри функции
Задача не суть важна. При попытке нажать кнопку, программа исправно работает до вызова функции,...

Универсальный шаблонный класс для указателей на функции и функции члены-классов
Доброй ночи уважаемые форумчане. Для начала немного предыстории: Представим ситуацию, нужен...

Rvalue ref как параметр функции. Странности с оптимизацией
Дана одна безумно сложная, запутанная и непонятная функция:int f2(int&amp;&amp; a) { a = 6; ...

Определить конструкторы, функции-члены установки времени, функции получения часа, минуты и секунд
Работа с классами. не могу сделать практ. задание, очень нужно Задание: Создать класс Time -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru