Warum ich für den Code untenkeine passende Funktion für den Aufruf von foo
Compiler C++ 14 Xcode 8.3.3
#include <iostream>
#include <array>
template<typename T, typename U>
void foo(std::array<T,sizeof(U)> x,
std::array<U,sizeof(T)> y,
int z)
{
puts(__PRETTY_FUNCTION__);
}
int main()
{
foo(std::array<int,8>{},std::array<double,4>{},1);
foo(std::array<int,9>{},std::array<double,4>{},2);
}
Fehler Erste Fehler für die zweite verwendete Build-Störung erhalten rufen
foo(std::array<int,9>{},std::array<double,4>{},2);
g++ -std=c++1z -fconcepts -fgnu-tm -O2 -Wall -Wextra -pedantic -pthread -pedantic-errors main.cpp -lm -latomic -lstdc++fs && ./a.out
main.cpp: In function 'int main()':
main.cpp:18:14: error: could not convert 'std::array<int, 9>{}' from 'std::array<int, 9>' to 'std::array<int, 8>'
foo(std::array<int,9>{},std::array<double,4>{},2);
^~~~~~~~~~~~~~
main.cpp: In instantiation of 'void foo(std::array<T, sizeof (U)>, std::array<U, sizeof (T)>, int) [with T = int; U = double]':
main.cpp:17:53: required from here
main.cpp:6:34: warning: unused parameter 'x' [-Wunused-parameter]
void foo(std::array<T,sizeof(U)> x,
^
main.cpp:7:34: warning: unused parameter 'y' [-Wunused-parameter]
std::array<U,sizeof(T)> y,
^
main.cpp:8:14: warning: unused parameter 'z' [-Wunused-parameter]
int z)
^
Aber wenn es eine einzige nennen, ist es funktioniert
#include <iostream>
#include <array>
template<typename T, typename U>
void foo(std::array<T,sizeof(U)> x,
std::array<U,sizeof(T)> y,
int z)
{
puts(__PRETTY_FUNCTION__);
}
int main()
{
foo(std::array<int,8>{},std::array<double,4>{},1);
//foo(std::array<int,9>{},std::array<double,4>{},2);
}
Ausgabe
void foo(std::array<T, sizeof(U)>, std::array<U, sizeof(T)>, int) [T = int, U = double]
Program ended with exit code: 0
Ist das Problem der zweite Anruf oder beide Anrufe? Was genau ist die Fehlermeldung und welche Version von welchem Compiler auf welcher Plattform erzeugt den Fehler? Welche Kompilierungsoptionen verwenden Sie? –
Der Screenshot ist kein Vorteil für die Frage, abgesehen davon, dass Sie XCode auf einem Mac verwenden. Vermeiden Sie Screenshots auf SO; Sie sind häufiger eine Ablenkung als eine Hilfe. –
@ JonathanLeffler Entschuldigung dafür, ich weiß nicht, warum ich nicht die gleiche Art von fehlerhaften in xcode bekommen .. Ich habe eine Demo-Link hinzugefügt –