Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733

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

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

Студворк — интернет-сервис помощи студентам
Собственно, компилируя с помощью 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
получаю вывод
Code
1
2
3
true
false
false
т.е. &dummy::two и &dummy::three - это как бы уже и не указатели на функции-члены... так и должно быть?

Добавлено через 17 минут
+ ещё так: http://ideone.com/PHcaHO
В общем что-то я уже запутался
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.08.2013, 01:48
Ответы с готовыми решениями:

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

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

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

2
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
26.08.2013, 02:54
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!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
26.08.2013, 03:34  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от Jupiter Посмотреть сообщение
похоже что баг
Тогда буду считать что так пока

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

Не по теме:

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

2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.08.2013, 03:34
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru