我正在尝试为创建别名
std::dynamic_pointer_cast
但不能写编译的东西。
我就是这样想的:
template <typename T1, typename T2>
using dcast = std::dynamic_pointer_cast<T1, T2>;
怎么了?
编译器错误:
海湾合作委员会:
dynamic_pointer_cast' in namespace 'std' does not name a type'
clang:
no type named 'dynamic_pointer_cast' in namespace 'std'
VS:
syntax error: identifier 'dynamic_pointer_cast'
试试看:
https://godbolt.org/g/akbqiu
编辑:正如布莱恩指出的,只能使用别名类型,不能使用函数。
我尝试了以下代码:
template <typename T1, typename T2>
auto& dcast = std::dynamic_pointer_cast<T1, T2>;
它似乎是自己编译的,但一旦您尝试调用它,它会给出以下错误:
error: wrong number of template arguments (1, should be 2)
你可以打电话
STD:动态的
但是只有一个模板参数。哪一个可以替代?