Questions tagged «dependent-name»

6
为什么必须在何处以及为什么要放置“模板”和“类型名”关键字?
在模板,在那里,为什么我必须把typename和template上依赖的名字呢? 无论如何,从属名称到底是什么? 我有以下代码: template <typename T, typename Tail> // Tail will be a UnionNode too. struct UnionNode : public Tail { // ... template<typename U> struct inUnion { // Q: where to add typename/template here? typedef Tail::inUnion<U> dummy; }; template< > struct inUnion<T> { }; }; template <typename T> // …

2
为什么此模板功能无法正常运行?
我在阅读有关模板函数的信息,并对这个问题感到困惑: #include <iostream> void f(int) { std::cout << "f(int)\n"; } template<typename T> void g(T val) { std::cout << typeid(val).name() << " "; f(val); } void f(double) { std::cout << "f(double)\n"; } template void g<double>(double); int main() { f(1.0); // f(double) f(1); // f(int) g(1.0); // d f(int), this is surprising …

3
在以下情况下,为什么不需要对依赖类型使用typename?
我一直在这里阅读有关删除类型引用的信息。 它给出以下示例: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, int &&>(); print_is_same<int, std::remove_reference<int>::type>(); // Why not typename std::remove_reference<int>::type ? print_is_same<int, std::remove_reference<int &>::type>();// Why …

2
C ++-为什么这里需要'template'关键字?
我有以下代码: template <typename TC> class C { struct S { template <typename TS> void fun() const {} }; void f(const S& s) { s.fun<int>(); } }; // Dummy main function int main() { return 0; } 在同时使用gcc 9.2和clang(9.0)进行构建时,由于template调用关键字需要关键字,因此出现编译错误fun。lang声显示: error: use 'template' keyword to treat 'fun' as a dependent template name …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.