首页>Program>source

今天我知道C ++允许使用 std::nullptr_t类型的非类型模板参数 :

template<std::nullptr_t N> struct A { };
template<std::nullptr_t N> void f() { }

在我的生命中,我无法提出任何明智的用例.任何人都可以提出一个合理的理由吗?

最新回答
  • 14天前
    1 #

    似乎可以避免使用指针类型和 std::nullptr_t值的特殊情况模板 .那个用例看起来像这样:

    template <typename T, T Ptr>
    struct pointer_object {
        static T get_pointer() { return Ptr; }
    };
    int int_ptr(0);
    typedef pointer_object<int*, &int_ptr> int_ptr_t;
    typedef pointer_object<std::nullptr_t, nullptr> null_ptr_t;
    

    也就是说,指针值可以是模板参数,因此可以是 nullptr

  • 14天前
    2 #

    我猜它在这样的设置中最有用:

    template <typename T, T Value> struct Foo;
    Foo<int, 10> x;
    Foo<std::nullptr_t, nullptr> y;
    

    没什么害处

    (也许是 std::integral_constant 是一个例子。)

  • SQL括号在OR子句中使用
  • python:通过平均调整大小或重新绑定一个numpy的二维数组