静态模板类成员函数的这两个调用之间有什么区别?
what's the diff between these two calls of static template class member function?
我正在尝试非类型模板参数,并且遇到了我无法理解的编译器错误,更不用说地址了。
我希望我的模板类的成员之一是静态的。无论出于何种原因,我都可以从main()
中成功调用静态类成员函数,但在此处所示之前却不:
enum class PrimeBits {
Two = 2,
Three = 2,
Five = 3,
Seven = 3,
Eleven = 4
};
template <typename T, enum PrimeBits P>
class wibble {
public:
wibble() {};
static void nBits () {
std::cout << "Bits: " << static_cast<int>(P) << std::endl;
}
};
wibble<int, PrimeBits::Eleven>::nBits(); // compiler error
// specializing member 'wibble<int, (PrimeBits)4>::nBits' requires 'template<>' syntax
int main () {
wibble<int, PrimeBits::Eleven>::nBits(); // compiles & runs ok
}
这是与GCC版本7.3.0一起使用-std = gnu 17 set。
如果要在main
之前调用方法,则可以使用全局变量:当您的方法返回void
时,使用逗号操作员能够初始化一个变量:
static const auto dummy = (wibble<int, PrimeBits::Eleven>::nBits(), 0);
相关文章:
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 是否可以在 OpenGL 中的同一调用中呈现两个具有不同索引起点的不同缓冲区?
- C++如果两个模板函数都与参数列表匹配,将调用哪个模板
- 是否可以使用非常量指针调用非常量函数,以及当两个unique_ptrs指向同一个对象时程序的行为方式?
- 如何在构造器的成员初始值设定项列表中调用两个函数?
- 当数组位于两个循环之间时,您可以调用数组的 void 函数吗?
- 为什么我要尝试在一个if语句中调用两个fucntions,但是在第一个完成后它忽略了另一个功能?(C )
- 调用两个功能(一个stdcall)的方法
- 如何将 GMock EXPECT_CALL设置为为模拟函数调用两个不同的函数
- 通过调用两个参数化的父类构造函数来构造继承的类
- 将调用两个重载模板中的哪一个
- 可以单独调用两个 CreateProcess() 共享相同的启动和进程信息
- 分发参数包以调用两个函子
- 在MAC OSX中的同一R会话中调用两个.Call(Rcpp)函数
- 为什么在我的程序中调用两个构造函数
- 如何以最小的延迟依次调用两个函数
- Qt可以同时调用两个插槽,如果它们从相同的信号被调用
- 为什么在这种情况下只调用一个构造函数而调用两个析构函数
- 将Python嵌入到c++中,调用两个函数并传递数组