C++表达模板:运算符是什么?

Arl*_*len 2 c++ templates

template <typename E>
class VecExpression{

public:

  operator E&(){
    return static_cast<E&>(*this);
  }
  operator E const&() const{
    return static_cast<const E&>(*this);
  }
};
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下这段代码吗?我从未见过这种运算符重载.它的返回类型是什么?它有任何参数吗?我可以看到一个用法,或者可能在源代码中调用它的位置?

资料来源:http://en.wikipedia.org/wiki/Expression_templates

Mar*_*k B 5

VecExpression是一个模板,因此运算符返回E对类的模板类型的const或非const引用.它是一个隐式转换运算符.它不需要参数,只需使用VecExpression<E>并允许它在需要的上下文中使用E.