Ich habe versucht, Code unten in Wandbox:std :: anwenden und konstanter Ausdruck?
#include <array>
#include <iostream>
#include <tuple>
#include <typeinfo>
#include <functional>
#include <utility>
int main()
{
constexpr std::array<const char, 10> str{"123456789"};
constexpr auto foo = std::apply([](auto... args) constexpr { std::integer_sequence<char, args...>{}; } , str);
std::cout << typeid(foo).name();
}
und der Compiler hat mir gesagt, dass args...
Ausdruck nicht konstant sind. Was ist los?
Es sei denn, dies in C++ 1z geändert hat, können Sie nicht constexpr Funktionsparameter haben. Das heißt, jede Funktion muss annehmen, dass sie mit Laufzeitparametern aufgerufen werden kann, und dann ist Ihr Lambda nicht sinnvoll. – krzaq
@krzaq Was für eine Schande ... – Cu2S