sepavloff added a comment.

In D131143#3700373 <https://reviews.llvm.org/D131143#3700373>, @efriedma wrote:

>> In the case is explicit instantiation there is apparent connection
>> between a point in source code and instantiated function. It can
>> support interaction of pragmas that act in that point. For example, in
>> the code:
>>
>>   #pragma STDC FENV_ROUND FE_DOWNWARD
>>   template float func_05<short>(float, float);
>>
>> the instantiated function is created with the specified constant
>> rounding mode. The effect is same as if the template pattern were
>> textually inserted into the code with needed replacements.
>
> These pragmas aren't currently part of the C++ standard, but I strongly doubt 
> the C++ standards committee would choose to do this.

This is an attempt to implement the interaction as proposed in the review of 
D129464 <https://reviews.llvm.org/D129464>. It is, of course, an extension, 
which may be convenient but nothing serious would happen if it is not 
implemented.

> You would end up with undefined behavior due to mismatched definitions, if 
> the template is implicitly instantiated elsewhere.

Indeed, it makes the solution fragile.

> The "obvious" rule here is just to always use the pragma in effect at the 
> point the template body is written.

Sure, it is already works in this way.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131143/new/

https://reviews.llvm.org/D131143

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to