Какой тип имеет указатель на член класса? Другими словами, что нужно подставить здесь, чтобы работало? Очевидное int*
не работает.
struct X {
int x = 0;
};
template<class T, T value>
auto foo() { return *value; }
int main() {
std::cout << foo</* какой тип? */, &X::x>();
}
Указатель на поле класса должен иметь тип int X::*
, а чтобы приведенный код работал надо еще создать экземпляр класса X
:
#include <iostream>
struct X
{
int x = 0;
};
template<auto x_pointer, typename x_Class>
auto foo(x_Class & obj)
{
return obj.*x_pointer;
}
// или так
template<int X::* x_pointer>
auto foo(X & obj)
{
return obj.*x_pointer;
}
int main()
{
X x{};
std::cout << foo<&X::x>(x);
}
online compiler
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
не знаю как заставить это работатьперепробовал уже все варианты (auto, iterator, const_iterator)
Есть задача распаковать данные, запакованные с помощью zlib и это делается всего одной функцией из этой библиотекиНо если у меня из всей библиотеки...
Есть цикл рисующий график функции f(x) = x * x * x - 10 * x*x - 3 * x + 59 с помощью LineToНо при отображении получаются ломанные линии,как это можно исправить?