举个例子:
template <class T>
struct tag {
tag(T) {}
};
int main() {
tag(int{}); //#1
auto t1 = tag(int{}); //#2
auto t3 = (tag(int{})); //#3
}
tag
有一个自动推导指南,该指南应涉及类模板参数的推导。至少我认为它应该像#1和#3在
[clang]
. 另一方面,在
[gcc]
. 所以问题是,我可以在函数样式转换表达式中自由使用类模板参数的推导吗?或者在这件事上有任何限制吗?
clang的错误列表:
prog.cc:7:19: error: expected unqualified-id
tag(int{}); //#1
^
prog.cc:7:19: error: expected ')'
prog.cc:7:18: note: to match this '('
tag(int{}); //#1
^
prog.cc:9:23: error: expected ')'
auto t3 = (tag(int{})); //#3
^
prog.cc:9:19: note: to match this '('
auto t3 = (tag(int{})); //#3
^
prog.cc:9:27: error: expected expression
auto t3 = (tag(int{})); //#3
^
4 errors generated.