2017-01-22 11 views
0

一般的に私はリスト内の位置を記述するために必要な宣言型の "union enum"型を作成するためにstd :: variantを使用しようとしています(UITableView/UICollectionView et.al) 。スウィフトはstd :: variantを使用してswifty objective-C++

これは私が何をする必要があるかを正確です:どちらか

enum Location { 
    case Header 
    case Footer 
    case Index(NSIndexPath) 
} 

マイAPIセクションの「ヘッダ」の位置(セクションと行0の任意の組み合わせ)、フッター(との組み合わせで呼び出すことができますセクションに応じて変化する動的な行番号)、または特定のインデックスパス。 C言語で

++私は、この動作を可能にstd::varianthttp://en.cppreference.com/w/cpp/utility/variantがあると信じている:私は、Objective-Cでこれを実行する必要が

++が、コンパイルエラーに

enum class Location { 
    Header, 
    Footer 
}; 

std::variant<Location,Index> location ; (NSIndexPath *) 

を私は#include (or #import) <variant>を含めるしようとすると、私は取得取得XCodeでvariant file not foundというコンパイラエラーが発生しました。

これを行う方法はありますか?

+2

'std :: variant'は、使用しているコンパイラでサポートされていないC++ 17の機能です。 –

+0

あなたがしたい場合は私はあなたの答えを受け入れるよ –

答えて

1

std::variantは、完成予定のC++ 17規格に含まれる機能です。いくつかのコンパイラは現在この機能をサポートしていますが、チェックする必要があります。

コンパイラが現在サポートしているコンパイラの場合は、stdではなくstd::experimental名前空間にあります。

関連する問題