Arj*_*ais 5 c++ templates arguments placeholder parameter-passing
在以下 C++ 代码中, function 的参数fun1和 function 的返回类型中的模板占位符ret1无法编译:
template <typename T = int>
class type {
T data;
};
void fun1(type arg); // Error: template placeholder not permitted in this context
void fun2(type<> arg); // Ok
void fun3(type<int> arg); // Ok
type ret1(); // Error: Deduced class type 'type' in function return type
type<> ret2(); // Ok
type<int> ret3(); // Ok
int main() {
type var1; // Ok!!!!!!
type<> var2; // Ok
type<int> var3; // Ok
}
Run Code Online (Sandbox Code Playgroud)
不过,var1还好啦。
var1编译,但是fun1和ret1编译?