【问题标题】:Variable template type可变模板类型
【发布时间】:2021-01-17 20:55:45
【问题描述】:

只是想确认模板变量的类型可以独立于模板。这是由 g++ 编译的:

template<class T> 
constexpr long MAX_AS_LONG = static_cast<long>(std::numeric_limits<T>::max());

是否符合标准?

(在互联网上的所有示例中,模板变量的类型都是T 本身)。

【问题讨论】:

  • 是的,这是允许的。你会相信我们的话,还是想要引用标准?
  • @HolyBlackCat 我不反对猫的知识!
  • 请记住,互联网上的这些示例通常侧重于证明模板产生不同的变量。所以改变类型只是证明它的一种简单方法。
  • 我希望这不是您代码中的实际片段。因为像 size_t 这样的 T 很容易溢出。
  • ...尤其是在 Windows 上,long 是 32 位。

标签: c++ templates c++14


【解决方案1】:

不要求模板变量的类型因模板参数而异。

一个常见的例子是std::is_same_v&lt;T,U&gt;,它始终是bool

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2021-01-05
    相关资源
    最近更新 更多