3
::プロトマニュアル、タイプSTDの端子に一致する文法の例があります:: <を変換...>:変換でboost :: proto :: _と一致するものの種類を知ることはできますか?ブーストで
struct StdComplex
: proto::terminal< std::complex<proto::_> >
{};
私はと何かをするという変革を書きたいですproto :: _の型。 たとえば、proto :: terminal < std :: complex < T>>と一致すると、boost :: shared_ptr < T>が返されます。
これは可能ですか?
私の質問を述べる別の方法は、次のスニペットの仕組みをどうやって作るのですか?あなたのショー変換
template<typename T>
struct Show : proto::callable
{
typedef T result_type;
result_type operator()(T& v)
{
std::cout << "value = " << v << std::endl;
return v;
}
};
struct my_grammar
: proto::when<proto::terminal<proto::_ >, Show<??? what comes here ???>(proto::_value) >
{};
ありがとう - 非常にエレガント! –
これは、 のために働くようですproto :: terminal :: type term1 = {{21}}; ではなく proto :: terminal :: type term1 = {{21}}; 私は正しいですか?私のアプリケーションでは、端末がshared_ptrを保持して、変換が変更できるものを指し示すようにしたい。これは問題ですか?ありがとう。 –
非const intのコンパイラからのエラーは次のとおりです。 'int'型への非const左辺参照は、 'int'型の一時的なものにバインドできません。 –