我無法覆蓋使用模板參數包擴展指定的基類的虛擬方法 - 重寫方法將顯示實際相關類型。下面是一個MCVE:無法覆蓋使用模板參數包擴展聲明的虛擬方法
#include <iostream>
template <typename... Ts>
class A { virtual void foo(Ts&&...); };
class B : public A<int, unsigned> {
void foo(int x, unsigned y) override { std::cout << "here"; }
};
int main() {
B b;
}
編譯此(與標準設置爲C++ 11或C++ 14),我得到:
a.cpp:9:7: error: ‘void B::foo(int, unsigned int)’ marked override, but does not override void foo(int x, unsigned y) override { ^
看在基類的函數的簽名。 – Columbo