내가이 말 ID를 구별 할 수 고유 식별자를 생성 또는 각 회원에 대한 주소. 발전기의 스케치(푸 :: A()) ID에서 (푸 :: B())
#define BIND(foo) Generate<decltype(&foo), &foo>::call
u = & BIND(S::f)
v = & BIND(S::g)
w = & BIND(S::h)
즉 BIND
연관된 C 스타일의 기능을 다음
를 생성한다 :
template< typename F f >
struct Generate {}
template < typename R, typename ...Arg, R(S::*target)(Arg...) >
struct Generate< R(S::*)(Arg...),target >
{
static R call(PyObject* self, Arg... carg)
{
cout << ??? // the name, e.g. 'S::b'
이
이
내가 사용하는거야 때문이다 이 함수를 생성 한S::foo
의 이름이
cout
이 필요합니다.
질문의 두 번째 부분은 다음과 같습니다. call
에서 동일한 UID를 복구하려면 어떻게해야합니까?
내가의 UID를 만들려고 해요 이유는 내가 할 수 있도록이다
static std::map<void*, std::string> names_map;
그럼 난 내 수정할 수 있습니다
#define BIND(foo) Generate<decltype(&foo), &foo>::call; \
names_map[ UID(foo) ] = std::string(#foo);
static R call(PyObject* self, Arg... carg)
{
cout << names_map[ UID( R(S::*target)(Arg...) ) ];
하지만 어떻게 실제로이 일을?
누구나 테스트 케이스를 만들었습니다. on coliru - 누구나 작동시킬 수 있습니까?
http://stackoverflow.com/questions/543306/platform-independent-guid-generation-in-c – pm100
uuid는 COM 세부 사항입니다. 유형에만 적용되고 기능에는 적용되지 않습니다. –
@HansPassant, 잘못된 용어 사용에 나쁘다. 나는 그 질문에 대해 다시 말 하였다. –