在使用clang ++的C ++中,是否可以根据隐式'this'参数的地址空间限定符重载方法?如果是这样,语法是什么?
This source建议我可以将地址空间限定符放在参数列表之后但在大括号之前(类似于在'this'上使用const限定符)。我尝试了以下内容,但失败了; clang认为我正在尝试设置方法的地址空间,而不是'this':
// Does not work.
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 rejects this syntax
}
我发现最接近的是clang允许我根据其显式形式参数的地址空间重载方法(不是'this')。例如,下面的代码将打印“1 \ n2 \ n”。
// Similar, but does not solve my problem:
#include <cstdio>
struct SomeClass
{
void doit(void *v) { printf("1\n"); }
void doit(void __attribute__((address_space(300))) *v) { printf("2\n"); }
};
int main(int argc, char **argv)
{
SomeClass SC;
SC.doit( (void*) 0 );
SC.doit( (void __attribute__((address_space(300))) *) 0 );
return 0;
}