对于下面的代码,是什么std::uint64_t = 0意思?
template< class T, std::uint64_t = 0 >
struct Dummy {
T value;
};
Run Code Online (Sandbox Code Playgroud)
它是 type 的非类型模板参数,std::uint64_t默认值为0。
请注意,该参数是未命名的,因此您不能直接在Dummy.
但是,此模板参数仍有多种用途,例如,您可以为此参数使用不同的值来选择 的特化Dummy:
// specialization
template< class T>
struct Dummy<T, 42> {
// ...
};
Run Code Online (Sandbox Code Playgroud)
现在Dummy<int>或Dummy<int, 0>将使用主模板,但Dummy<int, 42>将使用部分特化。它的一个常见用途是在称为 SFINAE 的技术中。
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |