gpt4 book ai didi

c++ - “使用类模板需要模板参数”错误,并带有默认指定的非类型模板参数值

转载 作者:行者123 更新时间:2023-12-03 07:09:11 24 4
gpt4 key购买 nike

编译此:

#include <iostream>
#include <memory>

template <auto val = 42>
struct A
{
A()
{
std::cerr << val << "\n";
}
};


int main(int argc, const char* argv[])
{
std::shared_ptr<A> a_ptr {new A {}};

return 0;
}
给出 error: use of class template 'A' requires template arguments。尽管我为非类型模板参数提供了默认值,并希望编译器能够以某种方式看到和使用它。我在这里想念什么?
谢谢。

最佳答案

它仍然是模板,并且仍然需要<>:

std::shared_ptr<A<>> a_ptr {new A<> {}};
考虑一下。如果您的函数具有默认参数:
int foo(int baz=42);
您是否可以不带括号就简单地调用它?
int foobar=foo;
当然不行,这是行不通的。您仍然需要括号:
int foobar=foo();
模板也一样。

关于c++ - “使用类模板需要模板参数”错误,并带有默认指定的非类型模板参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65027474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com