Разница между MSVC и GCC/Clang для конструктора constexprC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Разница между MSVC и GCC/Clang для конструктора constexpr

Сообщение Anonymous »

РЕДАКТИРОВАТЬ: это была проблема компилятора, и теперь она решена Microsoft. Обратитесь к https://developercommunity.visualstudio ... r/10677725.
Мне хотелось бы помочь понять, почему следующий код не работает. компилируется в MSVC (/std:c++20), но компилируется в GCC и Clang. Кажется, это связано с конструктором constexpr.
#include
#include

class TestX
{
bool GetA(char * outVal, unsigned int outValLen) {(void)outVal, (void)outValLen; return false;}

struct SupportedParam
{
using GetParamFunc = bool (TestX::*)(char * outVal, unsigned int outValLen);
constexpr SupportedParam(GetParamFunc gp) : GetParam(gp) {}
GetParamFunc GetParam;
};

static const auto & SupportedParameters()
{
static constexpr std::array t =
{
SupportedParam(&TestX::GetA)
};
static_assert(t[0].GetParam == &TestX::GetA);
return t;
};

public:

void Print()
{
for(auto & x : SupportedParameters())
{
std::cout *x.GetParam)(nullptr, 0);
}
}
};

int main(void)
{
TestX x;
x.Print();
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... onstructor
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»