相关疑难解决方法(0)

C++ 03中缺少typeof运算符?

我只是想知道boost如何实现BOOST_TYPEOF(在C++ 03中),这似乎是一个非常有用的工具.任何人有任何想法?

另外,我想C++ 03本身也有提供typeof运营商,尤其是当它已经具有sizeof(expr)其必须要知道类型的expr同时,否则怎么回事能告诉我们的大小,不知道类型?难道真的有可能知道大小,而不知道表达式的类型?

如果它不知道类型,那么编译器告诉我们什么(如果不是类型)的大小?我的意思是,对编译器(以及人类)也没有意义!sizeof(unknowntype)

c++ templates boost metaprogramming typeof

7
推荐指数
2
解决办法
1627
查看次数

从void指针中推断出一个类型

请考虑以下示例:

class MyContainer {
    std::vector<void *> v;
public:
    void Put(void *x) { v.push_back(x);}
    void* Get(int index) { return v[index];}
};

void Work (MyContainer& c) {
    // cast_to_type(c.Get(0));
}

int main() {
    int x = 1;
    double y = 2.0;
    MyContainer c;
    c.Put(&x);
    c.Put(&y);

    Work(c);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

假设函数Work对向量指针指向的对象一无所知.还假设继承不是一个选项,并且指向对象的类型可以是任意的(可以有无数种类型).

是否可以仅使用MyContainer::Get函数返回的void指针来推断类型?可以使用演员表,模板和typeid操作员的任意组合来完成吗?

c++ void-pointers

3
推荐指数
1
解决办法
3186
查看次数

标签 统计

c++ ×2

boost ×1

metaprogramming ×1

templates ×1

typeof ×1

void-pointers ×1