boost::optional 使用時のコンパイルエラー 'value_type' is a protected member of 'boost::optional_detail::optional_base<my_template_class<my_class>>'
アプリ制作のためにXcodeでC++を使っています。boost::optionalを使用していますが、
'...' is a protected member of
'boost::optional_detail::optional_base>'
というエラーが8個出ます。...は、以下のtypedefのvalue_type, reference_type, ... にあたります。
template<class T>
class optional : public optional_detail::optional_base<T>
{
typedef optional_detail::optional_base<T> base ;
public :
typedef optional<T> this_type ;
typedef BOOST_DEDUCED_TYPENAME base::value_type value_type ;
typedef BOOST_DEDUCED_TYPENAME base::reference_type reference_type ;
typedef BOOST_DEDUCED_TYPENAME base::reference_const_type reference_const_type ;
#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
typedef BOOST_DEDUCED_TYPENAME base::rval_reference_type rval_reference_type ;
typedef BOOST_DEDUCED_TYPENAME base::reference_type_of_temporary_wrapper reference_type_of_temporary_wrapper ;
#endif
typedef BOOST_DEDUCED_TYPENAME base::pointer_type pointer_type ;
typedef BOOST_DEDUCED_TYPENAME base::pointer_const_type pointer_const_type ;
typedef BOOST_DEDUCED_TYPENAME base::argument_type argument_type ;
また、my_template_classですが、
template<class T> class my_template_class
{
private:
T member_;
...
}
という風に定義されていて、
Field has incomplete type 'テンプレート引数に入れたクラス名'
というコンパイルエラーも出ています。どのように解決すればよいでしょうか。