【发布时间】:2020-05-21 07:57:01
【问题描述】:
我有一个类型TimeDuration。现在它是literal type,我可以将它用作非类型模板参数。这种用法与类型定义相距甚远(编译方式),因此如果有人修改 TimeDuration 使其不再是单独的文字,那么稍后会注意到。
所以我把static_assert(std::is_literal_type_v<TimeDuration>); 放在类定义之后。但是,is_literal_type 在 c++20 中被删除了。我可以用什么代替它?
我知道Deprecated std::is_literal_type in C++17,但答案基本上说我的问题不存在。
【问题讨论】:
-
作为参考,有简短的
std::has_strong_structural_equality,但是当类类型的 NTTP 被重写并且该术语被删除时,特征是故意的 dropped without replacement,部分原因是不清楚它是否是应该在未来表示“在 C++20 中支持”或“在当前 C++ 中支持”。
标签: c++ templates c++20 constexpr