gpt4 book ai didi

c++ - 默认模板参数 : Why does the compiler complain about not specifying template argument?

转载 作者:可可西里 更新时间:2023-11-01 17:46:29 25 4
gpt4 key购买 nike

我有这个代码:

struct A{};

template<class T = A>
struct B {
void foo() {}
};

B b; //Error: missing template arguments before 'b'
//Error: expected ';' before 'b'
//More errors
b.foo()

如果我将 foo() 作为具有相同模板“签名”的模板函数,编译器不会提示没有指定模板参数:

struct A {};

struct B {
template<class T = A>
void foo() {}
};

B b; //OK
b.foo()

那么为什么我需要为带有默认参数的模板类指定参数,而不是为模板函数指定参数呢?我是否遗漏了一些微妙之处?

原因肯定是因为模板参数推导失败。但我想知道为什么。

最佳答案

正确的语法是这样的(demo):

B<> b; 

默认参数 A假定为类模板 B . <>部分告诉编译器 B是一个类模板,并要求它采用默认参数作为它的模板参数。

关于c++ - 默认模板参数 : Why does the compiler complain about not specifying template argument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11231372/

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