- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
#include <iostream>
#include <tr1/functional>
using namespace std::tr1::placeholders;
struct I
{
int i;
};
struct S
{
int i;
I ii;
};
int main()
{
std::tr1::function<I& (S&)> pi = std::tr1::bind(&S::ii, _1);
std::tr1::function<std::tr1::reference_wrapper<I> (S&)> pri = std::tr1::bind(static_cast<std::tr1::reference_wrapper<I> (*)(I&)>(&std::tr1::ref<I>), std::tr1::bind(pi, _1));
std::tr1::function<int& (S&)> psi = std::tr1::bind(&I::i, std::tr1::bind(&std::tr1::reference_wrapper<I>::get, std::tr1::bind(pri, _1)));
S s = {1, {2}};
std::cout << psi(s) << std::endl;
psi(s) = 3;
std::cout << psi(s) << std::endl;
return 0;
}
Нашёл на RSDN, в теме о том, как получить указатель на член члена.
HaskellGovno 28.08.2012 08:16 # −3
suc-daniil 28.08.2012 08:20 # +1
С++ такой с++
HaskellGovno 28.08.2012 08:21 # 0
ЗЫ:Опоздал.
absolut 28.08.2012 09:12 # +1
suc-daniil 28.08.2012 10:54 # 0
TheCalligrapher 29.08.2012 23:25 # 0
LispGovno 29.08.2012 23:38 # 0
suc-daniil 30.08.2012 07:36 # +2