前提・実現したいこと
以下のコードのtoupperの前にある::がなぜ付き、なぜつかなければエラーになるのか教えてください。
該当のソースコード
C++
1#include <bits/stdc++.h> 2using namespace std; 3 4int main() { 5 string a; 6 cin >> a; 7 8 transform(a.begin(), a.begin() + 1, a.begin(), ::toupper); 9 10 cout << a << endl; 11}
補足
::を消すと、
no matching function for call to 'transform(std::__cxx11::basic_string<char>::iterator, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >, std::__cxx11::basic_string<char>::iterator, <unresolved overloaded function type>)'
というエラーが出ます。
また、::を消してtoupper()という形にした場合、
no matching function for call to 'toupper()'
というエラーになりました。
::なしでは、どのようなエラーが出ましたか?
単に::を消すと、
no matching function for call to 'transform(std::__cxx11::basic_string<char>::iterator, __gnu_cxx::__normal_iterator<char*, std::__cxx11::basic_string<char> >, std::__cxx11::basic_string<char>::iterator, <unresolved overloaded function type>)'
というエラーが出ました。
また、::を消してtoupper()という形にした場合、
no matching function for call to 'toupper()'
というエラーになりました。
回答2件
あなたの回答
tips
プレビュー