[cfe-users] c++ method overloading by address space of *this
Johnson, Nicholas Paul
Nicholas.Paul.Johnson at DEShawResearch.com
Thu Feb 5 07:14:05 PST 2015
Hi,
Is it possible to overload a method according to the address space of its implicit 'this' parameter? If so, what is the syntax?
I tried the following, but it failed because clang thinks I'm trying to set an address space of the method, rather than of 'this':
struct SomeClass
{
// method for 'this' in default address space
void doit();
// method for 'this' in address space 300.
void doit() __attribute__((address_space(300)); // clang does not accept this syntax:
}
The closest I have found is that clang lets me overload a method according to the address spaces of its explicit formal parameters (not 'this'). For example, the code below will print "1\n2\n".
Thanks,
Nick
#include <cstdio>
#define __A __attribute__((address_space(300)))
struct SomeClass
{
void doit(void *v) { printf("1\n"); }
void doit(void __A *v) { printf("2\n"); }
};
int main(int argc, char **argv)
{
SomeClass SC;
SC.doit( (void*) 0 );
SC.doit( (void __A *) 0 );
return 0;
}
More information about the cfe-users
mailing list