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