gpt4 book ai didi

this 的 C++ 类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:48 25 4
gpt4 key购买 nike

我正在用 C++ 编写一些模板代码,我发现如果我可以确定 this 的类型,它会使代码更短/更好/更有用。我不想使用 C++0x,因为代码要向后兼容旧的编译器。我也不想使用 BOOST。我所拥有的是这样的:

struct MyLoop {
template <class Param>
void Run(int iterations, Context c)
{
MyUtility<MyLoop>::template WrapLoop<Param>(iterations, c);
}
};

这可以用于一些有趣的循环优化。我不喜欢在 MyUtility 模板特化中使用 MyLoop。使用 C++0x,可以使用如下内容:

struct MyLoop {
template <class Param>
void Run(int iterations, Context c)
{
MyUtility<decltype(*this)>::template WrapLoop<Param>(iterations, c);
}
};

它的优点是不重复类名,整个事情可以隐藏在一个宏中(例如一个名为 DECLARE_LOOP_INTERFACE 的宏)。有没有办法在没有 BOOST 的情况下在 C++03 或更早版本中执行此操作?我将在 Windows/Linux/Mac 上使用代码。

我知道语法很丑,这是一个研究代码。请不要介意。

最佳答案

我相信这应该有效:

template <class Param, class Loop>
void Dispatcher(Loop *loop_valueIsNotUsed, int iterations, Context c)
{
MyUtility<Loop>::template WrapLoop<Param>(iterations, c);
}

// Usage:

struct MyLoop
{
template <class Param>
void Run(int iterations, Context c)
{
Dispatcher<Param>(this, iterations, c);
}
};

Loop 将从调用中推导出来。

关于this 的 C++ 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21141340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com