मेरे पास है:क्या वेक्टर <auto> अनुमत नहीं है? (त्रुटि: 'ऑटो' के अवैध उपयोग)
#include <cstdlib>
#include <vector>
using namespace std;
int main()
{
auto a = -SOME_CONST_MAX;
vector<auto> myVec {a, a, a, a};
}
मैं SOME_CONST_MAX
के प्रकार पता नहीं है, लेकिन मैं -SOME_CONST_MAX
के प्रकार का एक वेक्टर बनाना चाहते हैं। मुझे लगता है कि vector<auto>
काम करेगा क्योंकि यह a
के प्रकार से घटाएगा। g++ -std=c++14 main.cpp
main.cpp:9:9: error: invalid use of ‘auto’
vector<auto> myVec {a, a, a, a};
^
main.cpp:9:13: error: template argument 1 is invalid
vector<auto> myVec {a, a, a, a};
^
main.cpp:9:13: error: template argument 2 is invalid
main.cpp:9:32: error: scalar object ‘myVec’ requires one element in initializer
vector<auto> myVec {a, a, a, a};
^
vector<auto>
अनुमति नहीं है:
मैं इन त्रुटियों चल रहा हो रही है? मैं क्या गलत कर रहा हूं? वास्तव में सरल
आप 'वेक्टर' का उपयोग कर सकते हैं –
Slava
सी ++ 17 कक्षा टेम्पलेट्स के लिए टेम्पलेट प्रकार की कटौती पेश करेगा, इसलिए आपको 'वेक्टर myVec {a, a, a, a};' और कुछ करने की अनुमति दी जाएगी। संकलक 'myVec' के प्रकार को' वेक्टर 'के रूप में घटाएगा। –
vsoftco
अत्यधिक संबंधित: http://stackoverflow.com/questions/984394/why-not-infer-template-parameter-from-constructor – NathanOliver