【发布时间】:2012-08-20 23:23:25
【问题描述】:
Switch passed type from template 中提到了标签调度。
是否有可能(以及如何)做类似的事情:
struct Tag1 {};
struct Tag2 {};
template<class T, typename R>
R get();
template<>
double get<Tag1>() {return 1.3;}
template<>
char const *get<Tag2>() {return "hello";}
double aDouble = get<Tag1>();
char const *aString = get<Tag2>();
上面的代码导致编译器抱怨对重载函数的模糊调用,但我希望最后两行传达使用意图。
谢谢
【问题讨论】:
-
“有可能”是什么意思?为什么不?我不明白你在问什么。
-
有什么问题? (而不是 Tag1,Tag2 我会简单地使用 double 和 char const* 但你可能有你的理由)。
-
是的,我有返回类型工作的情况,我只是想知道边界在哪里。