C++ 模板化方法中的运算符重载
我有一门课(去掉了不相关的细节): 致: 但我的重载从未生效。我认为过载应该接近: 或者可能:C++ 模板化方法中的运算符重载,c++,operator-overloading,C++,Operator Overloading,我有一门课(去掉了不相关的细节): 致: 但我的重载从未生效。我认为过载应该接近: 或者可能: template <typename T, std::size_t idx> const T& operator[](std::size_t _idx) const { std::cout << "yay, overloading " << idx << std::endl; return
template <typename T, std::size_t idx>
const T& operator[](std::size_t _idx) const
{
std::cout << "yay, overloading " << idx << std::endl;
return idx * 1.0;
// return std::get<idx>(parameters);
}
模板
常量和运算符[](标准::大小\u T\u idx)常量
{
std::cout不可能在索引上专门化模板化的运算符[]
,因为索引是一个运行时属性
因此,std::tuple
有一个get()
成员函数,而不是操作符[]
(参见此)
此外,无法从赋值推断函数(或运算符)返回类型
因此,可以推断出模板操作符[]中的T
或idx
…
,不幸的是,这将它排除在可行的重载候选集之外
auto val1 = parameterPack->getValue<float, 1>();
auto test2 = parameterPack[1];
template <typename T, std::size_t idx>
const T& operator[](std::size_t _idx) const
{
std::cout << "yay, overloading " << idx << std::endl;
return idx * 1.0;
// return std::get<idx>(parameters);
}