template-instantiation相关内容

未实例化的模板的 C++ 标准要求

所以我尝试编译下面的代码但它失败了(正如预期的那样): 1.cpp:在函数‘int foo()’中:1.cpp:3:5: 错误:'some' 未在此范围内声明一些格式错误的代码^ 但是如果我删除这一行,编译器会编译它而不会出现任何错误(也可以预料,因为 T 类型是否具有 random_name() 方法是未知的). 似乎未使用(未实例化)的模板的诊断在某种程度上是实现定义的.但也许标准对 ..
发布时间:2021-09-04 20:42:40 C/C++开发

模板中定义的好友功能的实例化

这是此问题的后续内容.最初的情况是另外一回事,但是在我写一个差劲的答案和澄清OP的过程中,事实证明,我们可能需要语言律师的帮助才能了解正在发生的事情. 在C ++中的思考-实用程序编程第2卷中,可以找到以下示例(意图矿,在线 模板struct foo {好友作废bar(foo x){x ="123";}};int main(){fooX;bar(x); ..

是否可以使编译器按功能使用快速运算符?

假设我有 template void foo(float* data, size_t length); 并且我想用-ffast-math编译一个实例(对于nvcc是--use-fast-math),而没有它的另一个实例. 这可以通过在单独的翻译单元中实例化每个变体,然后使用不同的命令行(使用和不使用开关)来编译每个变体来实现. 我的问题 ..

是"if constexpr"在模板之外有用吗?

我正试图完全理解if constexpr. 我了解,如果在模板中使用if constexpr(expr)且expr依赖于模板参数,那么在实例化期间,将仅实例化then/else分支之一,而另一个将被实例化被丢弃. 我有两个问题: 是真的吗?如果expr不依赖于模板参数,那么if constexpr(expr)的任何分支都不会被丢弃?如果是,那么标准在哪里说呢?我看不出该标准在哪里 ..
发布时间:2020-07-23 06:20:57 C/C++开发