To prawdopodobnie ma bardzo prostą odpowiedź, ale naprawdę nie mogę tego rozgryźć. Dlaczego dostaję błędy, aby to zrobić? Jaki jest właściwy sposób inicjowania czegoś takiego?Inicjalizuj std :: tablica krotek z nawiasami klamrowymi
std::array<std::tuple<int, std::string>, 3> tuples{
{3, "a"},
{7, "b"},
{2, "c"}
};
Na MSVC 2015, otrzymuję następujące błędy:
No suitable constructor exists to convert from "int" to "std::tuple<int, std::string>"
No suitable constructor exists to convert from "const char[2]" to "std::tuple<int, std::string>"
Dlatego właśnie usunięta odpowiedź drugiego faceta zadziałała, zanim opublikowałem. Myślałem, że mógłbym robić coś innego, czego się nie spodziewałem. Chyba będę musiał użyć tablicy C lub po prostu zrobić to w ten sposób. Ugh ... C++ 17 nie może nadejść wystarczająco szybko. – Alex
@AlexYan: Możesz użyć 'pair', ponieważ twój obecny typ ma tylko dwóch członków. –
'std :: make_tuple' również działa. (nie wiedział dlaczego) – edmz