小编J.M*_*J.M的帖子

模板参数默认值与推导的模板参数相关

我知道这个问题与这篇文章非常相似,但是引用的文章是关于类模板参数推导的。这里我的问题是关于函数模板参数推导。

我目前有以下代码段,它使用户能够指定方法应使用的算法来计算某些值。(由于各种与此处不相关的原因,使用策略模式在这种情况下不适用)

#include <iostream>
#include <typeinfo>
template<typename T>
class BasicStrategy
{
    public:
    BasicStrategy(T& i_Input)
    {
        std::cout << "Applying Basic Strategy to type : " << typeid(T).name() << " With value : " << i_Input <<std::endl;
    }
};

template<typename T>
class ComplexStrategy
{
    public:
    ComplexStrategy(T& i_Input)
    {
        std::cout << "Applying Complex Strategy to type : " << typeid(T).name() << " With value : " << i_Input <<std::endl;
    }
};

template<typename T, typename STRATEGY = BasicStrategy<T>>
void Func(T& …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11 template-argument-deduction

4
推荐指数
1
解决办法
118
查看次数

当按引用传递时,C++ 如何检查数组的大小

当通过引用函数传递数组时,例如:

void Foo(double (&MyList)[3]);
Run Code Online (Sandbox Code Playgroud)

当您尝试向此函数传递大小为 3 的数组时,代码将无法编译。根据我在 C++ 中的理解,一旦实例化,就无法知道数组的大小。

编译器如何能够跟踪数组的大小?为什么那么,如果它能够检查数组的大小,这样的代码仍然可以编译?

int MyTab[3]
MyTab[3] = 5;
Run Code Online (Sandbox Code Playgroud)

c++ memory arrays

-1
推荐指数
1
解决办法
140
查看次数