私はC++ 17を使用していて、このようなコードの何かを書きたいと思い、::バリアント
#include <variant>
typedef int NewInt;
int main() {
std::variant<NewInt, int> n = 1;
}
しかし、それはコンパイルエラー発し、
po.cpp: In function ‘int main()’:
po.cpp:5:35: error: conversion from ‘int’ to non-scalar type ‘std::variant<int, int>’ requested
std::variant<NewInt, int> n = 1;
^
std::variant<NewInt, int>
のようなタイプをどのように定義できますか、それとも不可能ですか?
'std :: variant'があります。このエラーはその原因になります。あなたは 'NewInt'の代わりに他のもので確認できますか?たとえば、 'std :: variant n = 1; –
juanchopanza
あなたのアプローチは機能しません。 C++の場合でも、 'void f(int)'と 'void f(NewInt)'が別々のオーバーロードであると思えば、C++の場合でもC++を使う必要はありません。しかし、C++ 17では、 'enum class NewInt:int {};'を '強いint型 'として定義することができます。 –