我有一些对类型和初始值进行操作的宏。我需要将初始值转换vIni
为vType
(vIni
总是可转换为vType
,有时它具有相同的类型)。vIni
也可能为空,在这种情况下应该vType
未初始化或默认初始化。结果被传递给模板化函数。
简而言之,
template<typename T> void foo(const T& o);
foo(vType(vIni));
foo(vType());
必须编译。
我已经发现foo(unsigned int())
或者foo(int*())
不会编译,但它可以使用 typedef 来解决。
还有哪些其他情况(除了带有空格和指针的内置类型)会失败?