एक उदाहरण पर विचार है:यह गारंटी है कि टेम्पलेट टेम्पलेट पैरामीटर आह्वान उपयोगकर्ता प्रदान की कटौती गाइड
#include <type_traits>
#include <string>
template <template <class> class TT> //#1
struct Foo {
static void foo() {
static_assert(std::is_same_v<decltype(TT("abc")), TT<std::string>>);
}
};
template <class T>
struct Bar {
Bar(T) {}
};
template <class T>
Bar(T) -> Bar<std::string>; //#2
int main() {
Foo<Bar>::foo();
}
[clang] के साथ-साथ [gcc] दोनों उपयोगकर्ता प्रदान की कटौती गाइड का उपयोग करने लगते हैं (# 2) जब टेम्पलेट के टेम्पलेट पैरामीटर बात का अनुमान लगाना टेम्पलेट पैरामीटर (# 1)। क्या यह एक मानक अनुपालन सुविधा है?
मुझे वास्तव में उस उत्तर की उम्मीद थी, लेकिन अगर यह गलत हो गया .. तो मैं इसे वापस ले जाऊंगा;) –
एक तरफ थोड़ा सवाल है: आपको लगता है कि स्वत: कटौती मार्गदर्शिकाओं को या तो लागू नहीं किया जाना चाहिए? –
@ डब्ल्यूएफ। ठीक है, मैं पूरी तरह से जवाब फिसल गया :) – Barry