Могут шаблонные параметры конструктора быть явно указанными?

import os
import sys
spark_home = os.environ.get('SPARK_HOME', None)
sys.path.insert(0, spark_home + "/python")
sys.path.insert(0, os.path.join(spark_home, 'python/lib/py4j-0.10.4-src.zip'))

Здесь это происходит ....

sys.path.insert(0, <PATH TO YOUR JAR>)

Затем ...

import pyspark
import numpy as np

from pyspark import SparkContext

sc = SparkContext("local[1]")
.
.
.
30
задан sth 18 May 2010 в 23:18
поделиться

4 ответа

Нет. Стандарт C ++ 03 гласит:

[Примечание: поскольку явный список аргументов шаблона следует за именем шаблона функции, и поскольку шаблоны функций-членов преобразования и шаблоны функций-членов конструктора вызываются без использования имени функции, невозможно предоставить явный список аргументов шаблона для этих шаблонов функций.] (§14.5.2 / 5)

38
ответ дан 27 November 2019 в 23:54
поделиться

Существует еще одно решение для передачи информации о типе шаблонным конструкторам, которые не могут принимать значение этого типа в качестве аргумента:

template<class T>
struct id
{};

struct A {
  template<class T>
  A(id<T>);
};

A a=id<int>();

Редактировать:

Обратите внимание: A a(id<int>()); не будет работать из-за самого неприятного анализа. Это будет интерпретировано как объявление функции. См. этот вопрос для дальнейшего объяснения.

9
ответ дан Community 27 November 2019 в 23:54
поделиться

В качестве обходного пути: вы можете определить шаблонную статическую фабричную функцию, которая, в свою очередь, будет возвращать экземпляр, используя закрытый конструктор.

struct A {
    template<typename T>
    static A create() {
        return A();
    }
private:
    A() {}
};

Затем вы получаете новые экземпляры A, такие как:

auto a1 = A::create<int>();
auto a2 = A::create<long>();
3
ответ дан Knuckles 27 November 2019 в 23:54
поделиться

нет, вы не можете инстанцировать этот класс, используя этот конструктор. НО:



struct A
{
  template < typename T >
  A(T const&);
};

Теперь можете.

3
ответ дан 27 November 2019 в 23:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: