【发布时间】:2010-02-16 04:17:29
【问题描述】:
这只需要在 g++ 中工作。
我想要一个函数
template<typename T> std::string magic();
这样:
Class Foo{}; magic<Foo>(); // returns "Foo";
Class Bar{}; magic<Bar>(); // returns "Bar";
我不希望通过专业化来完成此操作(即必须为每种类型定义魔法。我希望在这里拉一些宏/模板黑魔法。有人知道怎么做吗?)
谢谢!
【问题讨论】:
-
现在哪一部分是必要的,哪一部分是你写的,因为你认为它是必要的。 Foo类重要吗?给我们一个更现实的用例。
-
这是对某种简单的静态反射机制的相当明显的要求,它不会带来 RTTI 的全部范围。
-
我想要一个可以传递任何类型的函数,它会为我返回类型的名称。
-
在 C++ 中,您可能正在寻找模板黑魔法。如果是这样,Modern C++ Design 会很有帮助。