[ad_1]
ごあいさつ よろしく
以下のルーチンはコンパイルされず、エラー メッセージが表示されます。 私は主に最初のルーチンに興味があります assert_Search_results
このエラーは、テンプレート パラメーターがシャドウされていることを示しています。 その意味がわかりません。 私はあなたの親切な援助を求めています。 よろしく
C++
import std.core; using namespace std; #define LINE_FUNCSIG cout << __LINE__ << ' ' << __FUNCSIG__ << endl; namespace TREE { template<typename treeType, template<typename> typename keyReferenceWrapper, template<typename> typename valueReferenceWrapper> struct key_x_value {}; } template<typename T> struct non_reference_wrapper {}; struct cContiguousIntervalTree { using this_tree_type = cContiguousIntervalTree; template<typename T> using key_reference_wrapper = non_reference_wrapper<T>; template<template<typename> typename valueReferenceWrapper> using key_x_value_template = TREE::key_x_value<this_tree_type, key_reference_wrapper, valueReferenceWrapper>; template<template<typename> typename referenceWrapper> using intersecting_x_datum_template = key_x_value_template<referenceWrapper>; }; // does not compile // error C2947 : expecting '>' to terminate template - argument - list, found '<' // error C7576 : declaration of 'referenceWrapper' shadows a template parameter // error C2988 : unrecognizable template declaration / definition // error C2143 : syntax error : missing ')' before '>' // error C2059 : syntax error : '>' // error C2059 : syntax error : ')' // Done building project "hello_world.vcxproj" --FAILED. template<typename treeType, template<typename> class referenceWrapper> void assert_Search_result(const vector<typename treeType::intersecting_x_datum_template<referenceWrapper>>); // does not compile // error C2988 : unrecognizable template declaration / definition // error C2143 : syntax error : missing ')' before '<' // error C2143 : syntax error : missing ';' before '<' // error C2059 : syntax error : '<' // error C2059 : syntax error : ')' // Done building project "hello_world.vcxproj" --FAILED. template<typename T, typename U> void foo(typename T::key_reference_wrapper); // much to my amazement compiles template<typename T, typename U> void goo(typename T::U);
私が試したこと:
re /依存型の下のcppreferenceページリンクを調べました。 役に立ちませんでした。 エラー C7576 に関する以下の Microsoft ページ リンクを調べました。 役に立ちませんでした。 Web で「テンプレート シャドウ」を検索しました。 何も見つかりませんでした。 上記のコードを調べて、これらすべてに下線が引かれている理由を判断してください。 役に立ちませんでした。
従属名 – cppreference.com a>[ ^ ]
コンパイラ エラー C7500 ~ C7999 | マイクロソフト ラーン[ ^ ]
解決策 1
これは同じ質問です テンプレートパラメータのコンパイルエラーの再/シャドウを解決する方法[^]. 再投稿しないでください。
[ad_2]
Source link
コメント