[Webkit-unassigned] [Bug 22325] New: MSVC gives bogus error about template argument specialization?
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Nov 17 14:26:26 PST 2008
https://bugs.webkit.org/show_bug.cgi?id=22325
Summary: MSVC gives bogus error about template argument
specialization?
Product: WebKit
Version: 528+ (Nightly build)
Platform: Macintosh
OS/Version: Mac OS X 10.5
Status: NEW
Severity: Normal
Priority: P2
Component: New Bugs
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: eric at webkit.org
CC: mjs at apple.com, aroben at apple.com, sfalken at apple.com
This seems to be a bogus error from MSVC. When I last chatted with mjs about
this, he seemed to agree it looked bogus. I would like to upstream our change
to this file, however I'm not sure if our use of pragma's is 100% the way
WebKit likes this done, but I'll make up a patch to do that first. :)
Here is how we fixed it:
--- chrome/src/webkit/third_party/WebKit/JavaScriptCore/wtf/RefPtrHashMap.h
(WebKit at 37604)
+++ chrome/src/webkit/third_party/WebKit/JavaScriptCore/wtf/RefPtrHashMap.h
(Chromium)
@@ -18,6 +18,9 @@
*
*/
+// Temporarily disable warning about using explicit template arguments
+#pragma warning(disable:4344)
+
namespace WTF {
// This specialization is a direct copy of HashMap, with overloaded
functions
@@ -334,3 +337,6 @@
}
} // namespace WTF
+
+// Re-enable warning disabled at top of file
+#pragma warning(default:4344)
This is the original error:
c:\projects\webkit\javascriptcore\wtf\RefPtrHashMap.h(176) : warning C4344:
behavior change: use of explicit template arguments results in call to
'WTF::HashTableIterator<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>
WTF::HashTable<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>::find<JSC::UString::Rep*,WTF::RefPtrHashMapRawKeyTranslator<RawKeyType,ValueType,ValueTraits,HashFunctions>>(const
T &)'
with
[
Key=WTF::RefPtr<JSC::UString::Rep>,
Value=std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>,
Extractor=WTF::PairFirstExtractor<std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>>,
HashFunctions=WTF::StrHash<WTF::RefPtr<JSC::UString::Rep>>,
Traits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<JSC::OffsetLocation>>,
KeyTraits=WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,
RawKeyType=JSC::UString::Rep *,
ValueType=std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>,
ValueTraits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<JSC::OffsetLocation>>,
T=JSC::UString::Rep *
]
but the regular function
'WTF::HashTableIterator<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>
WTF::HashTable<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>::find(const
WTF::RefPtr<T> &)' is a better match
with
[
Key=WTF::RefPtr<JSC::UString::Rep>,
Value=std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>,
Extractor=WTF::PairFirstExtractor<std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>>,
HashFunctions=WTF::StrHash<WTF::RefPtr<JSC::UString::Rep>>,
Traits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<JSC::OffsetLocation>>,
KeyTraits=WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,
T=JSC::UString::Rep
]
if you expect
'WTF::HashTableIterator<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>
WTF::HashTable<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>::find(const
WTF::RefPtr<T> &)' to be called then you need to make it an explicit
specialization
with
[
Key=WTF::RefPtr<JSC::UString::Rep>,
Value=std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>,
Extractor=WTF::PairFirstExtractor<std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>>,
HashFunctions=WTF::StrHash<WTF::RefPtr<JSC::UString::Rep>>,
Traits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<JSC::OffsetLocation>>,
KeyTraits=WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,
T=JSC::UString::Rep
]
c:\projects\webkit\javascriptcore\wtf\RefPtrHashMap.h(175) : while
compiling class template member function
'WTF::HashTableIteratorAdapter<HashTableType,ValueType>
WTF::HashMap<KeyArg,MappedArg>::find(JSC::UString::Rep *)'
with
[
HashTableType=WTF::HashTable<WTF::RefPtr<JSC::UString::Rep>,std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>,WTF::PairFirstExtractor<std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>>,WTF::StrHash<WTF::RefPtr<JSC::UString::Rep>>,WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<JSC::OffsetLocation>>,WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>>,
ValueType=std::pair<WTF::RefPtr<JSC::UString::Rep>,JSC::OffsetLocation>,
KeyArg=WTF::RefPtr<JSC::UString::Rep>,
MappedArg=JSC::OffsetLocation
]
VM\CodeBlock.h(161) : see reference to class template instantiation
'WTF::HashMap<KeyArg,MappedArg>' being compiled
with
[
KeyArg=WTF::RefPtr<JSC::UString::Rep>,
MappedArg=JSC::OffsetLocation
]
c:\projects\webkit\javascriptcore\wtf\RefPtrHashMap.h(270) : warning C4344:
behavior change: use of explicit template arguments results in call to 'Value
*WTF::HashTable<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>::lookup<JSC::UString::Rep*,WTF::RefPtrHashMapRawKeyTranslator<RawKeyType,ValueType,ValueTraits,HashFunctions>>(const
T &)'
with
[
Value=std::pair<WTF::RefPtr<JSC::UString::Rep>,WTF::RefPtr<JSC::EvalNode>>,
Key=WTF::RefPtr<JSC::UString::Rep>,
Extractor=WTF::PairFirstExtractor<std::pair<WTF::RefPtr<JSC::UString::Rep>,WTF::RefPtr<JSC::EvalNode>>>,
HashFunctions=WTF::StrHash<WTF::RefPtr<JSC::UString::Rep>>,
Traits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<WTF::RefPtr<JSC::EvalNode>>>,
KeyTraits=WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,
RawKeyType=JSC::UString::Rep *,
ValueType=std::pair<WTF::RefPtr<JSC::UString::Rep>,WTF::RefPtr<JSC::EvalNode>>,
ValueTraits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<WTF::RefPtr<JSC::EvalNode>>>,
T=JSC::UString::Rep *
]
but the regular function 'std::pair<_Ty1,_Ty2>
*WTF::HashTable<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>::lookup(const
Key &)' is a better match
with
[
_Ty1=WTF::RefPtr<JSC::UString::Rep>,
_Ty2=WTF::RefPtr<JSC::EvalNode>,
Key=WTF::RefPtr<JSC::UString::Rep>,
Value=std::pair<WTF::RefPtr<JSC::UString::Rep>,WTF::RefPtr<JSC::EvalNode>>,
Extractor=WTF::PairFirstExtractor<std::pair<WTF::RefPtr<JSC::UString::Rep>,WTF::RefPtr<JSC::EvalNode>>>,
HashFunctions=WTF::StrHash<WTF::RefPtr<JSC::UString::Rep>>,
Traits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<WTF::RefPtr<JSC::EvalNode>>>,
KeyTraits=WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>
]
if you expect 'std::pair<_Ty1,_Ty2>
*WTF::HashTable<Key,Value,Extractor,HashFunctions,Traits,KeyTraits>::lookup(const
Key &)' to be called then you need to make it an explicit specialization
with
[
_Ty1=WTF::RefPtr<JSC::UString::Rep>,
_Ty2=WTF::RefPtr<JSC::EvalNode>,
Key=WTF::RefPtr<JSC::UString::Rep>,
Value=std::pair<WTF::RefPtr<JSC::UString::Rep>,WTF::RefPtr<JSC::EvalNode>>,
Extractor=WTF::PairFirstExtractor<std::pair<WTF::RefPtr<JSC::UString::Rep>,WTF::RefPtr<JSC::EvalNode>>>,
HashFunctions=WTF::StrHash<WTF::RefPtr<JSC::UString::Rep>>,
Traits=WTF::PairHashTraits<WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>,WTF::HashTraits<WTF::RefPtr<JSC::EvalNode>>>,
KeyTraits=WTF::HashTraits<WTF::RefPtr<JSC::UString::Rep>>
]
c:\projects\webkit\javascriptcore\wtf\RefPtrHashMap.h(269) : while
compiling class template member function 'WTF::RefPtr<T>
WTF::HashMap<KeyArg,MappedArg>::inlineGet(JSC::UString::Rep *) const'
with
[
T=JSC::EvalNode,
KeyArg=WTF::RefPtr<JSC::UString::Rep>,
MappedArg=WTF::RefPtr<JSC::EvalNode>
]
c:\projects\webkit\javascriptcore\wtf\RefPtrHashMap.h(127) : while
compiling class template member function 'int
WTF::HashMap<KeyArg,MappedArg>::size(void) const'
with
[
KeyArg=WTF::RefPtr<JSC::UString::Rep>,
MappedArg=WTF::RefPtr<JSC::EvalNode>
]
c:\projects\webkit\javascriptcore\vm\EvalCodeCache.h(73) : see
reference to class template instantiation 'WTF::HashMap<KeyArg,MappedArg>'
being compiled
with
[
KeyArg=WTF::RefPtr<JSC::UString::Rep>,
MappedArg=WTF::RefPtr<JSC::EvalNode>
]
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the webkit-unassigned
mailing list