【问题标题】:How is to possible to have a non-static non-type parameter for c++ templates?c++ 模板怎么可能有一个非静态非类型参数?
【发布时间】:2023-02-22 07:58:41
【问题描述】:

C++ 模板是编译时构造。在 C++20 中,模板函数怎么可能用非静态对象实例化?

struct X {};
template<typename T, X x> auto f() {
    return x;
}

int main() {
    auto x = X{};
    f<double, x>();
}

【问题讨论】:

    标签: c++ templates c++20


    【解决方案1】:

    它是否是静态的并不重要,重要的是它是否在编译时可用。上面代码中的 x 由于其定义方式而在编译时可用。您可以在constexpr(以及对于函数,consteval)下阅读更多相关信息。

    【讨论】:

    • 但是它没有声明为constexpr,那么它在编译时是如何可用的呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2014-10-03
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    相关资源
    最近更新 更多