Какой тип имеет указатель на член класса? Другими словами, что нужно подставить здесь, чтобы работало? Очевидное 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
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
не знаю как заставить это работатьперепробовал уже все варианты (auto, iterator, const_iterator)
Есть задача распаковать данные, запакованные с помощью zlib и это делается всего одной функцией из этой библиотекиНо если у меня из всей библиотеки...
Есть цикл рисующий график функции f(x) = x * x * x - 10 * x*x - 3 * x + 59 с помощью LineToНо при отображении получаются ломанные линии,как это можно исправить?