我怎样才能静态断言表达式是一个std::unique_ptr即std::unique_ptr<T>任何T.
static_assert (std::is_pointer<decltype(exp)>()), "not a smart pointer")
Run Code Online (Sandbox Code Playgroud)
以上不起作用.如果没有直接的话,我只对bool()定义了类型的运算符感兴趣.
使用适当的部分特化创建自己的特征:
template <class T>
struct is_unique_ptr : std::false_type
{};
template <class T, class D>
struct is_unique_ptr<std::unique_ptr<T, D>> : std::true_type
{};
Run Code Online (Sandbox Code Playgroud)
您可以为此创建一个特征:
template <typename T, typename D>
std::true_type is_unique_ptr_impl(const std::unique_ptr<T, D>&, int);
template <typename T>
std::false_type is_unique_ptr_impl(const T&, ...);
template <typename T>
using is_unique_ptr = decltype(is_unique_ptr_impl(std::declval<T>(), 0));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
767 次 |
| 最近记录: |