【发布时间】:2022-01-03 09:51:03
【问题描述】:
在示例代码中,用 C++17 编译:
template <typename T = int>
struct A
{
static constexpr double b = 0.5;
};
int main()
{
A a; // compiles
double c = A<>::b; // compiles
double d = A::b; // fails to compile
// ...
return 0;
}
A::b 编译失败,因为:
main.cpp:13:16: error: 'template<class T> struct A' used without template arguments
13 | double d = A::b; // fails to compile
我认为在 C++17 中自动模板类型推导会解决这个问题,因为我有默认模板参数。我错过了什么?
【问题讨论】:
-
哪个编译器?
-
@kiner_shah 在 catkin 中编译,所以 gcc 带有一些 ros 版本。大概
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 -
但现场示例也能做到这一点,即版本:
g++ (GCC) 11.2.0