我想知道是否可以做这样的事情:
loop.run_in_executor(None, update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
})
由于 Template<class T, int node_1, int node_2>
class Node_
{
private:
//stuff goes here
public:
bool operator==(const Node<T,node_1,node_2> &rhs) const
{
//stuff goes here.
}
**Test.cpp**
#include "Node.h"
//all includes
template <int node_1, int node_2>
using NodeD = Node<double, node_1, node_2>;
void test_it_by_comparing()
{
using NodeDRC = NodeD<node_1, node_2>;
using NodeDCR = NodeD<node_2, node_1>;
//observe position of non-type node_1 and node_2.
using NodeD0 = NodeD<0, 0>;
constexpr int node_1 = 2;
constexpr int node_2 = 4;
double v=1.;
assert("compare check"&& !(NodeDCR(v) == NodeDRC(v)));
assert("compare check" && NodeD0(0) != NodeDRC(v));
assert("compare check" && !(NodeD0(0) == NodeDRC(v)));
}
和node_1
模板参数会切换位置,因此我不得不实施不同数量的同一运算符以接受适当的类型。
如果有人能解决这个问题,我将不胜感激。
答案 0 :(得分:2)
如果我正确理解了您的问题,则可以模板operator ==
来完成您想要的事情:
template<int M1, int M2>
bool operator ==(Node<T,M1,M2> const& rhs) const
{
// whatever you want
}
请记住,这意味着可以将任何Node<T,N1,N2>
与任意Node<T,M1,M2>
进行比较。 lhs和rhs参数仅强制T
相同。或者,如果您希望只保证参数翻转,则可以专门化,但是我怀疑您需要它。