タグ付けされた質問 「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 <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。Clangのショー: error: use 'template' keyword to treat 'fun' as a dependent template name …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.