1 template <typename addrT=int,typename valuT=int,typename stream_addrT=bm_addr,typename stream_sizeT=int64> 2 class stream_chip : public chip<addrT,valuT>{ 3 public: 4 typedef typename stream_addrT stream_addr_type; 5 typedef typename stream_sizeT stream_size_type; 6 7 stream_chip (bus_type * const owner, addr_type addr):chip<addrT,valuT>(owner,addr) 8 {} 9 public: 10 virtual stream_size_type write_mem(stream_addr_type dest_addr, void* pValue ,stream_size_type size)=0; //write board memory 11 virtual stream_size_type read_mem(void* pValue,stream_size_type size ,stream_addr_type src_addr)=0; //read bpard memory 12 13 };
All the codes are compiled in.
Delete the preceding public typename. The error is not reported. Alas, there are many problems with the ISO standard. The expansion implementation of various platforms is also messy.
References:
Http://bbs.csdn.net/topics/370075224
Http://stackoverflow.com/questions/5249835/expected-nested-name-specifier-before-const-error-with-typename-const-in-g
G ++ error: Expected Nested-name-specifier before 'xxx'