小编eup*_*upp的帖子

无法定义依赖typedef的成员

我正在编写自定义的lazy string类.

template <typename charT, typename traits = std::char_traits<charT>>
class lazy_basic_string
{
    class char_proxy
    {
        char_proxy& operator=(charT ch);
    };

    char_proxy operator[](size_type i);
}
Run Code Online (Sandbox Code Playgroud)

然后我想在类声明之外定义这些方法.

template <typename charT, typename traits>
using char_proxy = typename lazy_basic_string<charT, traits>::char_proxy;

template <typename charT, typename traits>
char_proxy<charT, traits>& char_proxy<charT, traits>::operator=(charT ch)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

但我得到编译错误:

无法定义依赖typedef char_proxy的成员

所以我无法弄清楚这里有什么问题.为什么编译器不能使用快捷方式char_proxy而不是lazy_basic_string :: char_proxy?

c++

9
推荐指数
1
解决办法
350
查看次数

另一个别名的模板别名

我在c ++ 11中使用'using'关键字时遇到了一些问题.这段代码应该为指向另一种类型的指针创建别名.

template <typename T>
class SomeClass
{
    typedef typename std::add_pointer<T>::type pointer;

    template <typename U>
    using rebind_pointer = typename std::pointer_traits<pointer>::rebind<U>;
}

SomeClass<int> obj;
Run Code Online (Sandbox Code Playgroud)

但是在gcc 4.7中我遇到了编译错误:

typename std::pointer_traits<int*>::rebind名称template<class _Up> using rebind = _Up*,不是类型

我发现pointer_traits :: rebind本身就是一个模板别名,所以这可能是问题吗?

c++ templates c++11

6
推荐指数
1
解决办法
187
查看次数

链接期间如何替换pthread_create

我想维护所有正在运行的线程的列表,以及有关每个线程的一些其他信息。在此答案中提到可以提供我自己的pthread_create版本并与其链接程序。我想在其覆盖版本的末尾调用原始pthread_create也很重要。

有人可以详细解释如何完成和/或提供一些代码示例吗?

c linux multithreading posix

5
推荐指数
1
解决办法
726
查看次数

SymPy表达另一个变量

我正在使用SymPy lib for Python.我有两个同情符号和表达方式将它们绑定在一起:

x = Symbol('x')
y = Symbol('y')
expr = 2 * x - 7 * y
Run Code Online (Sandbox Code Playgroud)

我如何用'x'来表达'y',即获得平等:

y = (2/7) * x
Run Code Online (Sandbox Code Playgroud)

谢谢.

python sympy

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

标签 统计

c++ ×2

c ×1

c++11 ×1

linux ×1

multithreading ×1

posix ×1

python ×1

sympy ×1

templates ×1