On 29.11.2017 19:18, Steven Schveighoffer wrote:
On 11/29/17 12:20 PM, Timon Gehr wrote:

I don't understand what you mean. Function types _contain_ parameter declarations. (Including attributes and default initializers.)

I too, am confused. I thought you meant that the types of the parameters would have attributes that might conflict/merge with the attributes declared on the parameters.

So maybe a snippet of code to further explain your concern?

-Steve

struct attribute1{}
struct attribute2{}

int foo(@attribute1 int x){ return x; }
int bar(@attribute2 int y){ return y; }

pragma(msg, typeof(&foo)); // int function(@attribute1 int x)?
pragam(msg, typeof(&bar)); // int function(@attribute2 int x)?

auto apply(F,A)(F fun,A arg){
    pragma(msg, F); // ? (instantiations below)
    return fun(arg);
}

void main(){
    apply(&foo,1); // one instantiation
    apply(&bar,1); // second instantiation, or same instance?
}

auto weird(){
    int x;
    void foo(@x int y){}
    return &foo;
}

pragma(msg, typeof(weird())); // ?

Reply via email to