On 31 August 2011 16:12, Anders Logg <l...@simula.no> wrote:
> I want to declare the following function:
>
>  template<class S, class T>
>  void apply_markers(S<T>& sub_domains, T sub_domain) const;
>
> S is a template class (either MeshFunction or MeshMarkers) and T is a
> primitive type.
>
> The above declaration does not work. How should it be declared? I've
> tried various other combinations without success.


If you can make T a typedef in S, this works:


template<typename V>
class Foo
{
public:
    typedef V value_type;
};

template<typename S>
void apply_markers(S & sub_domains, typename S::value_type sub_domain)
{
  S s;
}

int main(int argc, char *argv[])
{
    Foo<int> a;
    apply_markers< Foo<int> >(a, 3);
    return 0;
}

_______________________________________________
Mailing list: https://launchpad.net/~dolfin
Post to     : dolfin@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dolfin
More help   : https://help.launchpad.net/ListHelp

Reply via email to